| /* | |
| * @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 | |
| } |