| class c { |
| void f() { |
| //---- switch -------------------------------------------------------- |
| switch (<error descr="Incompatible types. Found: 'java.lang.String', required: 'byte, char, short or int'">"s"</error>) |
| {default:} |
| byte bt = 0; |
| switch (bt) { |
| case <error descr="Incompatible types. Found: 'java.lang.String', required: 'byte'">"S"</error>: break; |
| case <error descr="Incompatible types. Found: 'long', required: 'byte'">10L</error>: break; |
| case <error descr="Incompatible types. Found: 'boolean', required: 'byte'">true</error>: break; |
| case <error descr="Incompatible types. Found: 'int', required: 'byte'">0xdfffffff</error>: break; |
| case <error descr="Incompatible types. Found: 'char', required: 'byte'">'\udede'</error>: break; |
| case <error descr="Incompatible types. Found: 'int', required: 'byte'">1280</error>: break; |
| // assignable compatible to byte |
| case 0: break; |
| case 'c': break; |
| case -1: break; |
| case 127: break; |
| } |
| char ch = 'd'; |
| switch (ch) { |
| case <error descr="Incompatible types. Found: 'java.lang.String', required: 'char'">"S"</error>: break; |
| case <error descr="Incompatible types. Found: 'long', required: 'char'">10L</error>: break; |
| case <error descr="Incompatible types. Found: 'boolean', required: 'char'">true</error>: break; |
| case <error descr="Incompatible types. Found: 'int', required: 'char'">0xafffffff</error>: break; |
| // assignable compatible to char |
| case 0: break; |
| case '\u4567': break; |
| case 0xffff: break; |
| case 255: break; |
| } |
| switch ('d') {default:} |
| |
| /// --------- incompatible types inside array initializer ---------- |
| |
| |
| int[] ia = new int[] { |
| <error descr="Incompatible types. Found: 'java.lang.String', required: 'int'">"String"</error> |
| , <error descr="Incompatible types. Found: 'double', required: 'int'">3.4</error> |
| }; |
| |
| String[] sa = { "s", |
| <error descr="Incompatible types. Found: 'boolean', required: 'java.lang.String'">false</error> |
| , <error descr="Incompatible types. Found: 'char', required: 'java.lang.String'">'S'</error> |
| }; |
| |
| String[] vas = null; |
| Object o = new int[<error descr="Incompatible types. Found: 'java.lang.String', required: 'int'">vas[0]</error>]; |
| |
| int[] weird={<error descr="Illegal initializer for 'int'">{0}</error>}; |
| int[][] arrayInitializers = {{ }}; |
| int[][][] arrayInitializers2 = {{ }, {{}} }; |
| double[][] i2d = {{1}}; |
| char[][] i2c = {{1}}; |
| char foo = 0x0000; /* okay */ |
| char[] bar = { 1,2,3 }; /* still okay */ |
| char[][] baz = { { 1,2,3 } }; /* not okay in 4.5, okay in 4.0.x and for javac */ |
| |
| |
| /// -------- conditional operator |
| int i8 = <error descr="Incompatible types. Found: 'java.lang.String', required: 'boolean'">"ff" + true</error> ? 1 : 2; |
| int i9 = 1==2 ? 1 : <error descr="Incompatible types. Found: 'java.lang.String', required: 'int'">"ff" + true</error>; |
| i9 = 1==2 ? 3 : <error descr="Incompatible types. Found: 'null', required: 'int'">null</error>; |
| Object o9 = true ? 0 : <error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">new Object()</error>; |
| |
| |
| |
| final char ccons='0'; |
| short ssss=ccons; |
| byte bbbbbb=ccons; |
| // too big char to fit in short |
| final char bigchar='\uffff'; |
| <error descr="Incompatible types. Found: 'char', required: 'short'">short sbig = bigchar;</error> |
| } |
| |
| void g(boolean f, byte b) { |
| byte c = '\n'; |
| <error descr="Incompatible types. Found: 'int', required: 'byte'">byte next = f ? b : '\n';</error> |
| } |
| } |