| /* |
| * @test /nodynamiccopyright/ |
| * @bug 4037746 4277279 4350658 4785453 |
| * @summary Verify that an inner class cannot have the same simple name as an enclosing one. |
| * @author William Maddox (maddox) |
| * |
| * @compile/fail/ref=NestedInnerClassNames.out -XDrawDiagnostics NestedInnerClassNames.java |
| */ |
| |
| /* |
| * This program should compile with errors as marked. |
| */ |
| |
| public class NestedInnerClassNames { |
| |
| class NestedInnerClassNames {} // ERROR |
| |
| void m1() { |
| class NestedInnerClassNames {} // ERROR |
| } |
| |
| class foo { |
| class foo { } // ERROR |
| } |
| |
| void m2 () { |
| class foo { |
| class foo { } // ERROR |
| } |
| } |
| |
| class bar { |
| class foo { } |
| class NestedInnerClassNames {} // ERROR |
| } |
| |
| void m3() { |
| class bar { |
| class foo { } |
| class NestedInnerClassNames {} // ERROR |
| } |
| } |
| |
| class baz { |
| class baz { // ERROR |
| class baz { } // ERROR |
| } |
| } |
| |
| void m4() { |
| class baz { |
| class baz { // ERROR |
| class baz { } // ERROR |
| } |
| } |
| } |
| |
| class foo$bar { |
| class foo$bar { // ERROR |
| class foo { } |
| class bar { } |
| } |
| } |
| |
| void m5() { |
| class foo$bar { |
| class foo$bar { // ERROR |
| class foo { } |
| class bar { } |
| } |
| } |
| } |
| |
| class $bar { |
| class foo { |
| class $bar { } // ERROR |
| } |
| } |
| |
| void m6() { |
| class $bar { |
| class foo { |
| class $bar { } // ERROR |
| } |
| } |
| } |
| |
| class bar$bar { |
| class bar { |
| class bar{ } // ERROR |
| } |
| } |
| |
| void m7() { |
| class bar$bar { |
| class bar { |
| class bar{ } // ERROR |
| } |
| } |
| } |
| |
| // The name of the class below clashes with the name of the |
| // class created above for 'class foo { class foo {} }'. |
| // The clash follows from the naming requirements of the inner |
| // classes spec, but is most likely a specification bug. |
| |
| // Error may be reported here. See 4278961. |
| // As of Merlin-beta b21, this now results in an error. |
| class foo$foo { } // ERROR |
| |
| } |