Thu, 20 Mar 2014 10:42:00 -0700
Merge
aoqi@0 | 1 | /* |
aoqi@0 | 2 | * @test /nodynamiccopyright/ |
aoqi@0 | 3 | * @bug 8007401 8007427 |
aoqi@0 | 4 | * @author sogoel |
aoqi@0 | 5 | * @summary Test generation of warnings when '_' is used an identifier |
aoqi@0 | 6 | * @compile/fail/ref=IdentifierTest.out -Werror -XDrawDiagnostics IdentifierTest.java |
aoqi@0 | 7 | */ |
aoqi@0 | 8 | |
aoqi@0 | 9 | import java.util.List; |
aoqi@0 | 10 | |
aoqi@0 | 11 | /* |
aoqi@0 | 12 | * This test checks for the generation of warnings when '_' is used as an |
aoqi@0 | 13 | * identifier in following cases: |
aoqi@0 | 14 | * package name, class name, class member names including constructor |
aoqi@0 | 15 | * cass members access using class object or this |
aoqi@0 | 16 | * loops: for, enhanced-for, while, do-while |
aoqi@0 | 17 | * arrays, |
aoqi@0 | 18 | * switch, |
aoqi@0 | 19 | * annotations, element=value pair |
aoqi@0 | 20 | * try-catch, |
aoqi@0 | 21 | * enum |
aoqi@0 | 22 | * break + identifier |
aoqi@0 | 23 | * continue + identifier |
aoqi@0 | 24 | * type-bounds |
aoqi@0 | 25 | * Above cases for identifier occurrences have been identified from JLS v3. |
aoqi@0 | 26 | * |
aoqi@0 | 27 | */ |
aoqi@0 | 28 | |
aoqi@0 | 29 | // Test class |
aoqi@0 | 30 | public class IdentifierTest { |
aoqi@0 | 31 | class _UnderscorePrefix {} |
aoqi@0 | 32 | class Underscore_Infix {} |
aoqi@0 | 33 | class UnderscorePostfix_ {} |
aoqi@0 | 34 | class __ {} |
aoqi@0 | 35 | |
aoqi@0 | 36 | static final int _prefix = 10; |
aoqi@0 | 37 | List<String> postfix_; |
aoqi@0 | 38 | |
aoqi@0 | 39 | // Test: class with name as '_' |
aoqi@0 | 40 | class _ { |
aoqi@0 | 41 | String in_fix; |
aoqi@0 | 42 | //Test: Constructor, "_", local variable, value |
aoqi@0 | 43 | public _() { |
aoqi@0 | 44 | String _ = "_"; |
aoqi@0 | 45 | in_fix = _; |
aoqi@0 | 46 | } |
aoqi@0 | 47 | |
aoqi@0 | 48 | public void testClassMembersAccess(String[] _args) { |
aoqi@0 | 49 | // Instance creation |
aoqi@0 | 50 | _ _ = new _(); |
aoqi@0 | 51 | //Method invocation |
aoqi@0 | 52 | _.testTryCatch(); |
aoqi@0 | 53 | //Field access |
aoqi@0 | 54 | _.in_fix = "__"; |
aoqi@0 | 55 | } |
aoqi@0 | 56 | |
aoqi@0 | 57 | // Test: try-catch |
aoqi@0 | 58 | public void testTryCatch() { |
aoqi@0 | 59 | try { |
aoqi@0 | 60 | int _ = 30/0; |
aoqi@0 | 61 | } catch (ArithmeticException _) { |
aoqi@0 | 62 | System.out.println("Got Arithmentic exception " + _); |
aoqi@0 | 63 | } |
aoqi@0 | 64 | } |
aoqi@0 | 65 | } |
aoqi@0 | 66 | |
aoqi@0 | 67 | // Test: class member access using class object '_', use of this. |
aoqi@0 | 68 | class TestMisc { |
aoqi@0 | 69 | int _; |
aoqi@0 | 70 | void _ () { |
aoqi@0 | 71 | this._ = 5; |
aoqi@0 | 72 | } |
aoqi@0 | 73 | |
aoqi@0 | 74 | public void testClassMemberAccess(String[] args) { |
aoqi@0 | 75 | // Instance creation |
aoqi@0 | 76 | TestMisc _ = new TestMisc(); |
aoqi@0 | 77 | //Field access |
aoqi@0 | 78 | _._ = 10; |
aoqi@0 | 79 | //Method access |
aoqi@0 | 80 | _._(); |
aoqi@0 | 81 | } |
aoqi@0 | 82 | } |
aoqi@0 | 83 | |
aoqi@0 | 84 | //Test: Type Bounds |
aoqi@0 | 85 | class TestTypeBounds { |
aoqi@0 | 86 | //Type bounds |
aoqi@0 | 87 | <_ extends Object> void test(_ t) {} |
aoqi@0 | 88 | } |
aoqi@0 | 89 | |
aoqi@0 | 90 | // Test: enum and switch case |
aoqi@0 | 91 | static class TestEnum { |
aoqi@0 | 92 | // Enum |
aoqi@0 | 93 | enum _ { |
aoqi@0 | 94 | _MONDAY, _TUESDAY, _WEDNESDAY, _THURSDAY, _FRIDAY, |
aoqi@0 | 95 | _SATURDAY, _SUNDAY; |
aoqi@0 | 96 | } |
aoqi@0 | 97 | |
aoqi@0 | 98 | void foo() { |
aoqi@0 | 99 | // switch-case |
aoqi@0 | 100 | for(_ _day : _.values()) { |
aoqi@0 | 101 | switch(_day) { |
aoqi@0 | 102 | case _SATURDAY: |
aoqi@0 | 103 | case _SUNDAY: |
aoqi@0 | 104 | System.out.println("Weekend is here!"); |
aoqi@0 | 105 | break; |
aoqi@0 | 106 | default: |
aoqi@0 | 107 | System.out.println("Weekday is here!"); |
aoqi@0 | 108 | break; |
aoqi@0 | 109 | } |
aoqi@0 | 110 | } |
aoqi@0 | 111 | } |
aoqi@0 | 112 | } |
aoqi@0 | 113 | |
aoqi@0 | 114 | // Test: Annotation |
aoqi@0 | 115 | static class TestAnno { |
aoqi@0 | 116 | // Annotation with name as _ |
aoqi@0 | 117 | @interface _ { |
aoqi@0 | 118 | String _name(); |
aoqi@0 | 119 | int _id(); |
aoqi@0 | 120 | } |
aoqi@0 | 121 | // Element-Value pair |
aoqi@0 | 122 | @_(_name ="m",_id=1) |
aoqi@0 | 123 | public void m(int arg) {} |
aoqi@0 | 124 | |
aoqi@0 | 125 | //Annotation with _ as one of the elements |
aoqi@0 | 126 | @interface MyAnno { |
aoqi@0 | 127 | int _(); |
aoqi@0 | 128 | } |
aoqi@0 | 129 | // Element Value pair |
aoqi@0 | 130 | @MyAnno(_='1') |
aoqi@0 | 131 | public void m2() {} |
aoqi@0 | 132 | } |
aoqi@0 | 133 | |
aoqi@0 | 134 | // Test: for loop, while loop, do-while loop, increment/decrement op, condition, print |
aoqi@0 | 135 | public void testLoop() { |
aoqi@0 | 136 | // for loop |
aoqi@0 | 137 | for(int _ = 0; _ < 5; ++_) { |
aoqi@0 | 138 | System.out.println("_=" + _ + " "); |
aoqi@0 | 139 | } |
aoqi@0 | 140 | |
aoqi@0 | 141 | // while loop |
aoqi@0 | 142 | int _ = 0; |
aoqi@0 | 143 | while(_ <= 5) { |
aoqi@0 | 144 | _++; |
aoqi@0 | 145 | } |
aoqi@0 | 146 | |
aoqi@0 | 147 | //do-while loop |
aoqi@0 | 148 | do { |
aoqi@0 | 149 | --_; |
aoqi@0 | 150 | } while(_ > 0); |
aoqi@0 | 151 | } |
aoqi@0 | 152 | |
aoqi@0 | 153 | // Test: Array and enhanced for loop |
aoqi@0 | 154 | public void testArraysEnhancedForLoop() { |
aoqi@0 | 155 | // Arrays |
aoqi@0 | 156 | String _[] = {"A","B","C","D"}; |
aoqi@0 | 157 | |
aoqi@0 | 158 | for(String _s : _ ) { |
aoqi@0 | 159 | System.out.println("_s="+_s); |
aoqi@0 | 160 | } |
aoqi@0 | 161 | } |
aoqi@0 | 162 | |
aoqi@0 | 163 | // Test: Labels in break, continue |
aoqi@0 | 164 | public void testLabels() { |
aoqi@0 | 165 | // break/continue with labels |
aoqi@0 | 166 | int j = 0; |
aoqi@0 | 167 | _: |
aoqi@0 | 168 | for (int i = 0; i <= 5; i++) { |
aoqi@0 | 169 | while( j > 4 ) { |
aoqi@0 | 170 | j++; |
aoqi@0 | 171 | continue _; |
aoqi@0 | 172 | } |
aoqi@0 | 173 | break _; |
aoqi@0 | 174 | } |
aoqi@0 | 175 | } |
aoqi@0 | 176 | } |
aoqi@0 | 177 | |
aoqi@0 | 178 | //interface |
aoqi@0 | 179 | interface _ { |
aoqi@0 | 180 | void mI(); |
aoqi@0 | 181 | } |
aoqi@0 | 182 |