mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-02 10:14:57 +07:00
[java-highlighting] checkLabelSelectorCompatibility extracted and moved to SwitchChecker
Part of IDEA-365344 Create a new Java error highlighter with minimal dependencies (PSI only) GitOrigin-RevId: bec076c5bff67e22d06e64e573d3219a4c89dd4d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7bb33c7a68
commit
9e458c909c
+1
-1
@@ -33,7 +33,7 @@ public class Incompatible {
|
||||
case PrimitiveRecord(int x) when true -> {}
|
||||
case IntegerRecord(Integer x) when true -> {}
|
||||
case IntegerRecord(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">int x</error>) when true -> {}
|
||||
case <error descr="'Object' cannot be safely cast to 'T'">T(Integer x)</error> -> {}
|
||||
case <error descr="'Object' cannot be safely cast to 'T'"><error descr="Deconstruction pattern can only be applied to a record, 'T' is not a record">T</error>(Integer x)</error> -> {}
|
||||
|
||||
}
|
||||
switch (integer){
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ class Test {
|
||||
enum E{A}
|
||||
public void test4() {
|
||||
switch (null) {
|
||||
case <error descr="Incompatible types. Found: 'Test.E', required: 'null'">E.A</error> -> System.out.println("2"); //error
|
||||
case E.<error descr="Incompatible types. Found: 'Test.E', required: 'null'">A</error> -> System.out.println("2"); //error
|
||||
}
|
||||
}
|
||||
public void test5() {
|
||||
|
||||
+4
-1
@@ -241,8 +241,11 @@ class Main {
|
||||
System.out.println("ok");
|
||||
};
|
||||
|
||||
str = switch (d) {
|
||||
case MONDAY, TUESDAY -> <error descr="Bad type in switch expression: void cannot be converted to java.lang.String">System.out.println("ok")</error>;
|
||||
};
|
||||
str = switch (<error descr="'switch' expression does not cover all possible input values">d</error>) {
|
||||
case MONDAY, TUESDAY -> System.out.println("ok");
|
||||
case MONDAY, TUESDAY -> "ok";
|
||||
};
|
||||
str = switch (d) {
|
||||
case MONDAY, TUESDAY, WEDNESDAY -> "ok";
|
||||
|
||||
+2
-2
@@ -246,8 +246,8 @@ class Main {
|
||||
System.out.println("ok");
|
||||
}
|
||||
|
||||
str = switch (<error descr="'switch' expression does not cover all possible input values">d</error>) {
|
||||
case MONDAY, TUESDAY -> System.out.println("ok");
|
||||
str = switch (d) {
|
||||
case MONDAY, TUESDAY -> <error descr="Bad type in switch expression: void cannot be converted to java.lang.String">System.out.println("ok")</error>;
|
||||
};
|
||||
str = switch (d) {
|
||||
case MONDAY, TUESDAY, WEDNESDAY -> "ok";
|
||||
|
||||
+1
-53
@@ -1,58 +1,6 @@
|
||||
class IncompleteSwitch {
|
||||
|
||||
|
||||
public void testStatement(char o) {
|
||||
switch (o) {
|
||||
case
|
||||
<error descr="':' or '->' expected"><error descr="Expression, pattern, 'default' or 'null' expected">}</error></error>
|
||||
switch (o) {
|
||||
case '1'<EOLError descr="':' or '->' expected"></EOLError>
|
||||
}
|
||||
switch (o) {
|
||||
case '1' when<EOLError descr="Expression expected"></EOLError><EOLError descr="':' or '->' expected"></EOLError>
|
||||
}
|
||||
switch (o) {
|
||||
case <error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">char a</error> when a == '1'<EOLError descr="':' or '->' expected"></EOLError>
|
||||
}
|
||||
|
||||
|
||||
switch (o) {
|
||||
case '2' -> System.out.println("1");
|
||||
case
|
||||
<error descr="':' or '->' expected"><error descr="Expression, pattern, 'default' or 'null' expected">}</error></error>
|
||||
switch (o) {
|
||||
case '2' -> System.out.println("1");
|
||||
case '1'<EOLError descr="':' or '->' expected"></EOLError>
|
||||
}
|
||||
switch (o) {
|
||||
case '2' -> System.out.println("1");
|
||||
case '1' when<EOLError descr="Expression expected"></EOLError><EOLError descr="':' or '->' expected"></EOLError>
|
||||
}
|
||||
switch (o) {
|
||||
case '2' -> System.out.println("1");
|
||||
case <error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">char a</error> when a == '1'<EOLError descr="':' or '->' expected"></EOLError>
|
||||
}
|
||||
}
|
||||
|
||||
public void testExpression(char o) {
|
||||
|
||||
int i = switch (<error descr="'switch' expression does not cover all possible input values">o</error>) {
|
||||
case '2':
|
||||
yield 1;
|
||||
case
|
||||
<error descr="':' or '->' expected"><error descr="Expression, pattern, 'default' or 'null' expected">}</error></error>;
|
||||
|
||||
i = switch (<error descr="'switch' expression does not cover all possible input values">o</error>) {
|
||||
case '2':
|
||||
yield 2;
|
||||
case '1'<EOLError descr="':' or '->' expected"></EOLError>
|
||||
};
|
||||
i = switch (<error descr="'switch' expression does not cover all possible input values">o</error>) {
|
||||
case '2':
|
||||
yield 2;
|
||||
case '1' when<EOLError descr="Expression expected"></EOLError><EOLError descr="':' or '->' expected"></EOLError>
|
||||
};
|
||||
i = switch (o) {
|
||||
int i = switch (o) {
|
||||
case '2':
|
||||
yield 2;
|
||||
case <error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">char a</error> when a == '1'<EOLError descr="':' or '->' expected"></EOLError>
|
||||
|
||||
+2
-2
@@ -47,13 +47,13 @@ class C {
|
||||
}
|
||||
|
||||
void defaultBranchAlwaysThrows(int n) {
|
||||
String s = <error descr="Switch expression does not have any result expressions">switch</error> (n) {
|
||||
String s = <error descr="'switch' expression does not have any result expressions">switch</error> (n) {
|
||||
default: throw new RuntimeException();
|
||||
};
|
||||
}
|
||||
|
||||
void defaultRuleAlwaysThrows(int n) {
|
||||
String s = <error descr="Switch expression does not have any result expressions">switch</error> (n) {
|
||||
String s = <error descr="'switch' expression does not have any result expressions">switch</error> (n) {
|
||||
default -> throw new RuntimeException();
|
||||
};
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,9 +10,9 @@ class SwitchExpressions {
|
||||
|
||||
System.out.println(switch (<error descr="'switch' expression does not have any case clauses">new Random().nextInt()</error>) { });
|
||||
|
||||
System.out.println(switch (<error descr="'switch' expression does not cover all possible input values">new Random().nextInt()</error>) {
|
||||
System.out.println(switch (new Random().nextInt()) {
|
||||
case 0 -> throw new IllegalStateException("no args");
|
||||
case 1: yield "lone";
|
||||
<error descr="Different 'case' kinds used in 'switch'">case 1:</error> yield "lone";
|
||||
});
|
||||
|
||||
System.out.println(
|
||||
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
class Test {
|
||||
void test() {
|
||||
int i = <error descr="Switch expression does not have any result expressions">switch</error>(0) {
|
||||
int i = <error descr="'switch' expression does not have any result expressions">switch</error>(0) {
|
||||
default -> throw new NullPointerException();
|
||||
};
|
||||
}
|
||||
|
||||
void test2() {
|
||||
int i = <error descr="Switch expression does not have any result expressions">switch</error>(0) {
|
||||
int i = <error descr="'switch' expression does not have any result expressions">switch</error>(0) {
|
||||
case 0 -> {while(true);}
|
||||
case 1 -> {
|
||||
throw new RuntimeException();
|
||||
|
||||
Reference in New Issue
Block a user