From cbb421ecb611936ca04f65d8d04db0b1359ced77 Mon Sep 17 00:00:00 2001 From: Nikita Eshkeev Date: Wed, 27 Oct 2021 12:29:52 +0300 Subject: [PATCH] [java][instanceof] IDEA-280626 Patterns in instanceof: red code false-negative Move the test data to LightPatternsHighlightingTest Signed-off-by: Nikita Eshkeev GitOrigin-RevId: f62fc31839e92b03161837d92b2518c4b13ab5c8 --- .../InstanceOfPatternMatching.java | 24 +++++++++++++++++++ .../dataFlow/fixture/Instanceof.java | 21 ---------------- .../daemon/LightPatternsHighlightingTest.java | 5 +++- 3 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfPatternMatching.java diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfPatternMatching.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfPatternMatching.java new file mode 100644 index 000000000000..2577436939a4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfPatternMatching.java @@ -0,0 +1,24 @@ + +class Main { + + private static final boolean TRUE = 1 == 1; + + void testGuardedPatternWithCompileTimeCondition1(String s) { + if (s instanceof (String s1 && true)) { + System.out.println(s1); + } + } + + void testGuardedPatternWithAlwaysTrueCondition2(String s) { + if (s instanceof (String s1 && TRUE)) { + System.out.println(s1); + } + } + + void testGuardedPatternWithAlwaysTrueCondition3(String s) { + if (s instanceof ((String s1 && true) && true)) { + System.out.println(s1); + } + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/Instanceof.java b/java/java-tests/testData/inspection/dataFlow/fixture/Instanceof.java index a2892bbede8e..8e76bb781985 100644 --- a/java/java-tests/testData/inspection/dataFlow/fixture/Instanceof.java +++ b/java/java-tests/testData/inspection/dataFlow/fixture/Instanceof.java @@ -1,7 +1,4 @@ class Test { - - private static final boolean TRUE = 1 == 1; - void testTypePattern1(Object o) { o = "fsd"; if (o instanceof String s) { @@ -56,24 +53,6 @@ class Test { } } - void testGuardedPatternWithCompileTimeCondition1(String s) { - if (s instanceof (String s1 && true)) { - System.out.println(s1); - } - } - - void testGuardedPatternWithAlwaysTrueCondition2(String s) { - if (s instanceof (String s1 && TRUE)) { - System.out.println(s1); - } - } - - void testGuardedPatternWithAlwaysTrueCondition3(String s) { - if (s instanceof ((String s1 && true) && true)) { - System.out.println(s1); - } - } - private String getString() { return "str"; } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsHighlightingTest.java index 6e045e12894b..6f12f2b58922 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsHighlightingTest.java @@ -18,7 +18,7 @@ public class LightPatternsHighlightingTest extends LightJavaCodeInsightFixtureTe @NotNull @Override protected LightProjectDescriptor getProjectDescriptor() { - return JAVA_16; + return JAVA_17; } public void testInstanceOfBasics() { @@ -49,6 +49,9 @@ public class LightPatternsHighlightingTest extends LightJavaCodeInsightFixtureTe public void testInstanceOfSubtype() { doTest(); } + public void testInstanceOfPatternMatching() { + doTest(); + } private void doTest() { myFixture.configureByFile(getTestName(false) + ".java");