mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
[java] value breaks: basic highlighting (IDEA-196643)
This commit is contained in:
+2
-2
@@ -101,8 +101,8 @@ class C {
|
||||
int n;
|
||||
return 2;
|
||||
n = <error descr="Unreachable statement">switch</error>(s) {
|
||||
case "a": n= 1;break;
|
||||
default: n= 0;
|
||||
case "a": n = 1; break 1;
|
||||
default: n = 0; break 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+14
-1
@@ -12,7 +12,7 @@ class SwitchExpressions {
|
||||
|
||||
System.out.println(switch (new Random().nextInt()) {
|
||||
case 0 -> throw new IllegalStateException("no args");
|
||||
<error descr="Different case kinds used in the switch">case 1:</error> break;
|
||||
<error descr="Different case kinds used in the switch">case 1:</error> break "lone";
|
||||
});
|
||||
|
||||
System.out.println(
|
||||
@@ -44,5 +44,18 @@ class SwitchExpressions {
|
||||
case E1 -> 1;
|
||||
case E2 -> 2;
|
||||
});
|
||||
|
||||
lab: while (true) {
|
||||
switch (new Random().nextInt()) {
|
||||
case -1: return;
|
||||
case -2: continue lab;
|
||||
default: break lab;
|
||||
}
|
||||
System.out.println(switch (new Random().nextInt()) {
|
||||
case -1: <error descr="Return outside of enclosing switch expression">return;</error>
|
||||
case -2: <error descr="Continue outside of enclosing switch expression">continue lab;</error>
|
||||
default: <error descr="Break outside of enclosing switch expression">break lab;</error>
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
class ValueBreaks {
|
||||
static final int ref = -1;
|
||||
|
||||
void m() {
|
||||
l1: break l1;
|
||||
|
||||
<error descr="Break outside switch or loop">break;</error>
|
||||
break <error descr="Undefined label: 'wtf'">wtf</error>;
|
||||
<error descr="Value break outside switch expression">break 42;</error>
|
||||
|
||||
switch (0) {
|
||||
case 0: <error descr="Value break outside switch expression">break 42;</error>
|
||||
case 1: break <error descr="Undefined label: 'ref'">ref</error>;
|
||||
case 2: break <error descr="Undefined label: 'wtf'">wtf</error>;
|
||||
case 3: ref: break ref;
|
||||
};
|
||||
|
||||
sink(switch (0) {
|
||||
case 0 -> { while (true) <error descr="Value break outside switch expression">break 42;</error> }
|
||||
case 1 -> { while (true) break <error descr="Undefined label: 'ref'">ref</error>; }
|
||||
case 2 -> { while (true) break <error descr="Undefined label: 'wtf'">wtf</error>; }
|
||||
case 3 -> { break ref; }
|
||||
case 4 -> { break <error descr="Cannot resolve symbol 'wtf'">wtf</error>; }
|
||||
default -> throw new RuntimeException();
|
||||
});
|
||||
|
||||
ref: sink(switch (0) {
|
||||
default: break <error descr="Reference to 'ref' is ambiguous, both 'ref:' and 'ValueBreaks.ref' match">ref</error>;
|
||||
});
|
||||
|
||||
while (true) {
|
||||
sink(switch (0) {
|
||||
default: <error descr="Missing break value">break;</error>
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void sink(Object o) { }
|
||||
}
|
||||
Reference in New Issue
Block a user