test/tools/javac/NestedInnerClassNames.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 611
4172cfff05f0
parent 0
959103a6100f
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * @test /nodynamiccopyright/
aoqi@0 3 * @bug 4037746 4277279 4350658 4785453
aoqi@0 4 * @summary Verify that an inner class cannot have the same simple name as an enclosing one.
aoqi@0 5 * @author William Maddox (maddox)
aoqi@0 6 *
aoqi@0 7 * @compile/fail/ref=NestedInnerClassNames.out -XDrawDiagnostics NestedInnerClassNames.java
aoqi@0 8 */
aoqi@0 9
aoqi@0 10 /*
aoqi@0 11 * This program should compile with errors as marked.
aoqi@0 12 */
aoqi@0 13
aoqi@0 14 public class NestedInnerClassNames {
aoqi@0 15
aoqi@0 16 class NestedInnerClassNames {} // ERROR
aoqi@0 17
aoqi@0 18 void m1() {
aoqi@0 19 class NestedInnerClassNames {} // ERROR
aoqi@0 20 }
aoqi@0 21
aoqi@0 22 class foo {
aoqi@0 23 class foo { } // ERROR
aoqi@0 24 }
aoqi@0 25
aoqi@0 26 void m2 () {
aoqi@0 27 class foo {
aoqi@0 28 class foo { } // ERROR
aoqi@0 29 }
aoqi@0 30 }
aoqi@0 31
aoqi@0 32 class bar {
aoqi@0 33 class foo { }
aoqi@0 34 class NestedInnerClassNames {} // ERROR
aoqi@0 35 }
aoqi@0 36
aoqi@0 37 void m3() {
aoqi@0 38 class bar {
aoqi@0 39 class foo { }
aoqi@0 40 class NestedInnerClassNames {} // ERROR
aoqi@0 41 }
aoqi@0 42 }
aoqi@0 43
aoqi@0 44 class baz {
aoqi@0 45 class baz { // ERROR
aoqi@0 46 class baz { } // ERROR
aoqi@0 47 }
aoqi@0 48 }
aoqi@0 49
aoqi@0 50 void m4() {
aoqi@0 51 class baz {
aoqi@0 52 class baz { // ERROR
aoqi@0 53 class baz { } // ERROR
aoqi@0 54 }
aoqi@0 55 }
aoqi@0 56 }
aoqi@0 57
aoqi@0 58 class foo$bar {
aoqi@0 59 class foo$bar { // ERROR
aoqi@0 60 class foo { }
aoqi@0 61 class bar { }
aoqi@0 62 }
aoqi@0 63 }
aoqi@0 64
aoqi@0 65 void m5() {
aoqi@0 66 class foo$bar {
aoqi@0 67 class foo$bar { // ERROR
aoqi@0 68 class foo { }
aoqi@0 69 class bar { }
aoqi@0 70 }
aoqi@0 71 }
aoqi@0 72 }
aoqi@0 73
aoqi@0 74 class $bar {
aoqi@0 75 class foo {
aoqi@0 76 class $bar { } // ERROR
aoqi@0 77 }
aoqi@0 78 }
aoqi@0 79
aoqi@0 80 void m6() {
aoqi@0 81 class $bar {
aoqi@0 82 class foo {
aoqi@0 83 class $bar { } // ERROR
aoqi@0 84 }
aoqi@0 85 }
aoqi@0 86 }
aoqi@0 87
aoqi@0 88 class bar$bar {
aoqi@0 89 class bar {
aoqi@0 90 class bar{ } // ERROR
aoqi@0 91 }
aoqi@0 92 }
aoqi@0 93
aoqi@0 94 void m7() {
aoqi@0 95 class bar$bar {
aoqi@0 96 class bar {
aoqi@0 97 class bar{ } // ERROR
aoqi@0 98 }
aoqi@0 99 }
aoqi@0 100 }
aoqi@0 101
aoqi@0 102 // The name of the class below clashes with the name of the
aoqi@0 103 // class created above for 'class foo { class foo {} }'.
aoqi@0 104 // The clash follows from the naming requirements of the inner
aoqi@0 105 // classes spec, but is most likely a specification bug.
aoqi@0 106
aoqi@0 107 // Error may be reported here. See 4278961.
aoqi@0 108 // As of Merlin-beta b21, this now results in an error.
aoqi@0 109 class foo$foo { } // ERROR
aoqi@0 110
aoqi@0 111 }

mercurial