推測なので、間違っているかもしれませんが、実行前の構文解析で検出していると思います。3行目でAが登録済みになっているために、7行目でAを登録しようとしてエラーを検出しているのではないでしょうか。宣言は実行対象で無くなったと思われ、へたれさんのおっしゃるように、最初に使用する前に定義する必要があると思われます。