[java-highlighting] IJ-CR-132828 IDEA-352588 Support JEP 455: highlighting for switch with primitives

- chars print as themselves without a conversion

GitOrigin-RevId: beee890cd3fca0d4ae907645f76e9f28f173ad09
This commit is contained in:
Mikhail Pyltsin
2024-05-04 17:20:47 +02:00
committed by intellij-monorepo-bot
parent 41866f69fa
commit c50d80250d
2 changed files with 14 additions and 9 deletions

View File

@@ -1046,7 +1046,12 @@ public class SwitchBlockHighlightingModel {
description = JavaErrorBundle.message("duplicate.unconditional.pattern.label");
}
else {
description = JavaErrorBundle.message("duplicate.switch.label", duplicateKey);
if (duplicateElement instanceof PsiLiteralExpression literalExpression) {
description = JavaErrorBundle.message("duplicate.switch.label", literalExpression.getValue());
}
else {
description = JavaErrorBundle.message("duplicate.switch.label", duplicateKey);
}
}
HighlightInfo.Builder info = createError(duplicateElement, description);
PsiSwitchLabelStatementBase labelStatement = PsiTreeUtil.getParentOfType(duplicateElement, PsiSwitchLabelStatementBase.class);

View File

@@ -101,8 +101,8 @@ public class SwitchConstantPrimitiveSimilar {
byte o = '1';
switch (o) {
case 1 -> System.out.println("1");
case <error descr="Duplicate label '97'">'a'</error> -> System.out.println("a");
case <error descr="Duplicate label '97'">'a'</error> -> System.out.println("a");// error
case <error descr="Duplicate label 'a'">'a'</error> -> System.out.println("a");
case <error descr="Duplicate label 'a'">'a'</error> -> System.out.println("a");// error
case 0xa -> System.out.println("0xa");
default -> System.out.println("default");
}
@@ -118,8 +118,8 @@ public class SwitchConstantPrimitiveSimilar {
private static void testChar() {
char o = '1';
switch (o) {
case <error descr="Duplicate label ''">1</error> -> System.out.println("1");
case <error descr="Duplicate label ''">1</error> -> System.out.println("1");// error
case <error descr="Duplicate label '1'">1</error> -> System.out.println("1");
case <error descr="Duplicate label '1'">1</error> -> System.out.println("1");// error
default -> System.out.println("default");
}
switch (o) {
@@ -236,8 +236,8 @@ public class SwitchConstantPrimitiveSimilar {
Byte o = '1';
switch (o) {
case 1 -> System.out.println("1");
case <error descr="Duplicate label '97'">'a'</error> -> System.out.println("a");
case <error descr="Duplicate label '97'">'a'</error> -> System.out.println("a");// error
case <error descr="Duplicate label 'a'">'a'</error> -> System.out.println("a");
case <error descr="Duplicate label 'a'">'a'</error> -> System.out.println("a");// error
case 0xa -> System.out.println("0xa");
default -> System.out.println("default");
}
@@ -253,8 +253,8 @@ public class SwitchConstantPrimitiveSimilar {
private static void testCharObject() {
Character o = '1';
switch (o) {
case <error descr="Duplicate label ''">1</error> -> System.out.println("1");
case <error descr="Duplicate label ''">1</error> -> System.out.println("1");// error
case <error descr="Duplicate label '1'">1</error> -> System.out.println("1");
case <error descr="Duplicate label '1'">1</error> -> System.out.println("1");// error
default -> System.out.println("default");
}
switch (o) {