mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
[java] drops value break support
GitOrigin-RevId: dd17b9f4cc4dde37c0e3f8db6eae17251fe9681f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
be6247932a
commit
90ef6314da
-57
@@ -1,57 +0,0 @@
|
||||
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="Yield outside of switch expression">yield 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;
|
||||
case 4: ref: <error descr="Yield outside of switch expression">yield (ref);</error>
|
||||
};
|
||||
|
||||
sink(switch (0) {
|
||||
case 0 -> { while (true) <error descr="Value break outside switch expression">break 42;</error> }
|
||||
case 1 -> { while (true) <error descr="Value break outside switch expression">break ref;</error> }
|
||||
case 2 -> { while (true) break <error descr="Undefined label: 'wtf'">wtf</error>; }
|
||||
case 3 -> { yield ref; }
|
||||
case 4 -> { yield (ref); }
|
||||
case 5 -> { break <error descr="Cannot resolve symbol 'wtf'">wtf</error>; }
|
||||
case 6 -> {
|
||||
int a = 0;
|
||||
a: switch (0) {
|
||||
default: break <error descr="Reference to 'a' is ambiguous, both 'a:' and 'variable a' match">a</error>;
|
||||
}
|
||||
}
|
||||
default -> throw new RuntimeException();
|
||||
});
|
||||
|
||||
switch (0) {
|
||||
case 0 -> { while (true) break <error descr="Undefined label: 'ref'">ref</error>; }
|
||||
case 1 -> {
|
||||
int a = 0;
|
||||
a: switch (0) {
|
||||
default: break a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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: yield<error descr="Expression expected">;</error>
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void sink(Object o) { }
|
||||
}
|
||||
+26
-19
@@ -1,40 +1,47 @@
|
||||
class YieldStatements {
|
||||
static final int ref = -1;
|
||||
|
||||
void m(int i) {
|
||||
System.out.println(switch (i) {
|
||||
case 0: yield "zero";
|
||||
default: <error descr="Value breaks are superseded by 'yield' statements">break "many";</error>
|
||||
});
|
||||
<error descr="Case statement outside switch">default:</error> <error descr="Yield outside of switch expression">yield 0;</error>
|
||||
|
||||
l1: yield <error descr="Cannot resolve symbol 'l1'">l1</error>;
|
||||
|
||||
switch (i) {
|
||||
default: <error descr="Yield outside of switch expression">yield 0;</error>
|
||||
}
|
||||
|
||||
System.out.println(switch (i) {
|
||||
default:
|
||||
case 1 -> { while (true) yield ref; }
|
||||
case 2 -> { while (true) break <error descr="Undefined label: 'wtf'">wtf</error>; }
|
||||
case 3 -> { yield ref; }
|
||||
case 4 -> { yield (ref); }
|
||||
case 5 -> { <error descr="Break outside of enclosing switch expression">break wtf;</error> }
|
||||
case 6 -> {
|
||||
int a = 0;
|
||||
a: switch (0) { default: yield a; }
|
||||
}
|
||||
case 7 -> {
|
||||
Runnable r = () -> { <error descr="Yield outside of switch expression">yield 0;</error> };
|
||||
r.run();
|
||||
yield 0;
|
||||
});
|
||||
System.out.println(switch (i) {
|
||||
default: switch (i) {
|
||||
default: yield "0";
|
||||
}
|
||||
case 8 -> {
|
||||
switch (i) { default -> { yield 0; } }
|
||||
}
|
||||
case 9 -> { yield<error descr="Expression expected">;</error> }
|
||||
case 10 -> {
|
||||
int yield = i;
|
||||
yield yield;
|
||||
}
|
||||
case 11 -> { yield <error descr="Expression type should not be 'void'">m(0)</error>; }
|
||||
default -> throw new RuntimeException();
|
||||
});
|
||||
|
||||
out: while (true) {
|
||||
System.out.println(switch (i) {
|
||||
case 0: <error descr="Break outside of enclosing switch expression">break;</error>
|
||||
case 1: <error descr="Value breaks are superseded by 'yield' statements">break i;</error>
|
||||
default: <error descr="Break outside of enclosing switch expression">break out;</error>
|
||||
});
|
||||
}
|
||||
|
||||
System.out.println(switch (i) {
|
||||
default: yield <error descr="Expression type should not be 'void'">m(0)</error>;
|
||||
});
|
||||
|
||||
int yield = i;
|
||||
i = switch (i) {
|
||||
default: yield yield;
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user