Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchConstantPrimitiveSimilar.java
Mikhail Pyltsin 45160db0df [java-highlighting] IDEA-352588 Support JEP 455: highlighting for switch with primitives
GitOrigin-RevId: 06636352b202037ec3400b2f9763e101d8ed6042
2024-04-29 21:17:42 +00:00

298 lines
11 KiB
Java
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package dfa;
public class SwitchConstantPrimitiveSimilar {
public static final long LONG = 2L + 3L;
private static final Long LONG_OBJECT = LONG;
public static void main(String[] args) {
testBoolean();
testInt();
testChar();
testByte();
testShort();
testLong();
testFloat();
testDouble();
testBooleanObject();
testIntObject();
testCharObject();
testByteObject();
testShortObject();
testLongObject();
testFloatObject();
testDoubleObject();
}
private static void testDouble() {
double o = 0.0;
switch (o) {
case <error descr="Duplicate label '1'">1.0</error> -> System.out.println("1.0f");
case <error descr="Duplicate label '1'">1.0</error> -> System.out.println("1.0f"); // error
default -> System.out.println("default");
}
switch (o) {
case 1.0 -> System.out.println("1.0f");
case 2.0 -> System.out.println("1.0f");
default -> System.out.println("default");
}
}
private static void testFloat() {
float o = 1F;
switch (o) {
case <error descr="Duplicate label '1'">1.0f</error> -> System.out.println("1.0f");
case <error descr="Duplicate label '1'">1.0f</error> -> System.out.println("1.0f");// error
default -> System.out.println("default");
}
switch (o) {
case 1.0f -> System.out.println("1.0f");
case 2.0f -> System.out.println("1.0f");
default -> System.out.println("default");
}
}
private static void testLong() {
long o = 1L;
switch (o) {
case <error descr="Duplicate label '1'">1L</error> -> System.out.println("1l");
case <error descr="Duplicate label '1'">1L</error> -> System.out.println("1l");// error
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case 2L -> System.out.println("1l");
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case 2L + 3L -> System.out.println("1l");
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case LONG -> System.out.println("1l");
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case <error descr="Constant expression required">LONG_OBJECT</error> -> System.out.println("1l");// error
default -> System.out.println("default");
}
}
private static void testShort() {
short o = 1;
switch (o) {
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) {
case 2 -> System.out.println("1");
case 1 -> System.out.println("1");
default -> System.out.println("default");
}
}
private static void testByte() {
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 0xa -> System.out.println("0xa");
default -> System.out.println("default");
}
switch (o) {
case 1 -> System.out.println("1");
case 'a' -> System.out.println("a");
case 'b' -> System.out.println("a");
case 0xa -> System.out.println("0xa");
default -> System.out.println("default");
}
}
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
default -> System.out.println("default");
}
switch (o) {
case 1 -> System.out.println("1");
case 2 -> System.out.println("1");
default -> System.out.println("default");
}
}
private static void testInt() {
int o = 1;
switch (o) {
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) {
case 1 -> System.out.println("1");
case 2 -> System.out.println("1");
default -> System.out.println("default");
}
}
private static void testBoolean() {
boolean o = true;
switch (o) {
case <error descr="Duplicate label 'true'">true</error> -> System.out.println("true");
case <error descr="Duplicate label 'true'">true</error> -> System.out.println("true");// error
default -> System.out.println("default");
}
switch (o) {
case false -> System.out.println("true");
case true -> System.out.println("true");
}
switch (o) {
case <error descr="Constant expression required">Boolean.TRUE</error> -> System.out.println("true");// error
case true -> System.out.println("true");
}
}
private static void testDoubleObject() {
Double o = 0.0;
switch (o) {
case <error descr="Duplicate label '1'">1.0</error> -> System.out.println("1.0f");
case <error descr="Duplicate label '1'">1.0</error> -> System.out.println("1.0f");// error
default -> System.out.println("default");
}
switch (o) {
case 1.0 -> System.out.println("1.0f");
case 2.0 -> System.out.println("1.0f");
default -> System.out.println("default");
}
}
private static void testFloatObject() {
Float o = 1F;
switch (o) {
case <error descr="Duplicate label '1'">1.0f</error> -> System.out.println("1.0f");
case <error descr="Duplicate label '1'">1.0f</error> -> System.out.println("1.0f");// error
default -> System.out.println("default");
}
switch (o) {
case 1.0f -> System.out.println("1.0f");
case 2.0f -> System.out.println("1.0f");
default -> System.out.println("default");
}
}
private static void testLongObject() {
Long o = 1L;
switch (o) {
case <error descr="Duplicate label '1'">1L</error> -> System.out.println("1l");
case <error descr="Duplicate label '1'">1L</error> -> System.out.println("1l");// error
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case 2L -> System.out.println("1l");
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case 2L + 3L -> System.out.println("1l");
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case LONG -> System.out.println("1l");
default -> System.out.println("default");
}
switch (o) {
case 1L -> System.out.println("1l");
case <error descr="Constant expression required">LONG_OBJECT</error> -> System.out.println("1l");// error
default -> System.out.println("default");
}
}
private static void testShortObject() {
Short o = 1;
switch (o) {
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) {
case 2 -> System.out.println("1");
case 1 -> System.out.println("1");
default -> System.out.println("default");
}
}
private static void testByteObject() {
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 0xa -> System.out.println("0xa");
default -> System.out.println("default");
}
switch (o) {
case 1 -> System.out.println("1");
case 'a' -> System.out.println("a");
case 'b' -> System.out.println("a");
case 0xa -> System.out.println("0xa");
default -> System.out.println("default");
}
}
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
default -> System.out.println("default");
}
switch (o) {
case 1 -> System.out.println("1");
case 2 -> System.out.println("1");
default -> System.out.println("default");
}
}
private static void testIntObject() {
Integer o = 1;
switch (o) {
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) {
case 1 -> System.out.println("1");
case 2 -> System.out.println("1");
default -> System.out.println("default");
}
}
private static void testBooleanObject() {
Boolean o = true;
switch (o) {
case <error descr="Duplicate label 'true'">true</error> -> System.out.println("true");
case <error descr="Duplicate label 'true'">true</error> -> System.out.println("true");// error
default -> System.out.println("default");
}
switch (o) {
case false -> System.out.println("true");
case true -> System.out.println("true");
}
switch (o) {
case <error descr="Constant expression required">Boolean.TRUE</error> -> System.out.println("true");// error
case true -> System.out.println("true");
}
}
}