blob: 18f8b36cbb62ea307fa8d536cf757f1b9f90c944 [file] [log] [blame]
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>
}
}