[java-highlighting] IDEA-357866 Spurious "Different case kinds used in the switch" error on incomplete code

- fixes
- not double error messages

GitOrigin-RevId: 8f789243ee4e09d3eb8de6a2db7dcbe25ee517db
This commit is contained in:
Mikhail Pyltsin
2024-08-22 15:19:45 +02:00
committed by intellij-monorepo-bot
parent cd14483af8
commit e01d24d5c8
9 changed files with 173 additions and 4 deletions

View File

@@ -0,0 +1,61 @@
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) {
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>
};
}
}

View File

@@ -0,0 +1,10 @@
class IncompleteSwitchFixColon {
public void testStatement(char o) {
switch (o) {
case '2'-> System.out.println("1");
case '1'<caret><EOLError descr="':' or '->' expected"></EOLError>
}
}
}

View File

@@ -0,0 +1,10 @@
class IncompleteSwitchFixColon {
public void testStatement(char o) {
switch (o) {
case '2'-> System.out.println("1");
case '1' -><caret>
}
}
}

View File

@@ -0,0 +1,12 @@
class IncompleteSwitchFixColon {
public void testStatement(char o) {
switch (o) {
case '2':
System.out.println("1");
break;
case '1'<caret><EOLError descr="':' or '->' expected"></EOLError>
}
}
}

View File

@@ -0,0 +1,12 @@
class IncompleteSwitchFixColon {
public void testStatement(char o) {
switch (o) {
case '2':
System.out.println("1");
break;
case '1':<caret>
}
}
}