mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[java-analysis] JavaPsiPatternUtil.getExposedPatternVariables: support switch guard
Fixes IDEA-353697 Instanceof pattern as nullchecks are suggested for removal GitOrigin-RevId: b187d2dcc71ecac7ad68c696d0583741791c47eb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d69af56141
commit
a60bd8c4eb
@@ -52,7 +52,8 @@ public final class JavaPsiPatternUtil {
|
||||
parent instanceof PsiPrefixExpression && ((PsiPrefixExpression)parent).getOperationTokenType().equals(JavaTokenType.EXCL) ||
|
||||
parent instanceof PsiPolyadicExpression && ((PsiPolyadicExpression)parent).getOperationTokenType().equals(JavaTokenType.ANDAND) ||
|
||||
parent instanceof PsiPolyadicExpression && ((PsiPolyadicExpression)parent).getOperationTokenType().equals(JavaTokenType.OROR) ||
|
||||
parent instanceof PsiConditionalExpression || parent instanceof PsiIfStatement || parent instanceof PsiConditionalLoopStatement;
|
||||
parent instanceof PsiConditionalExpression || parent instanceof PsiIfStatement || parent instanceof PsiConditionalLoopStatement ||
|
||||
parent instanceof PsiSwitchLabeledRuleStatement; // in guard
|
||||
if (!parentMayAccept) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
class Test {
|
||||
sealed interface I {}
|
||||
record A(String a) implements I {}
|
||||
|
||||
public static void main(String[] args) {
|
||||
I i = new A("1");
|
||||
switch (i) {
|
||||
case A(var a) when a instanceof String s -> System.out.println(s);
|
||||
default -> System.out.println("default");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,6 +117,7 @@ public class DataFlowInspection21Test extends DataFlowInspectionTestCase {
|
||||
public void testReadResolve2() { doTest(); }
|
||||
public void testDifferentTypesButNullable() { doTest(); }
|
||||
public void testInstanceOfWidening() { doTest(); }
|
||||
public void testSwitchPatternInGuard() { doTest(); }
|
||||
public void testForEachPattern() {
|
||||
myFixture.addClass("""
|
||||
package org.jetbrains.annotations;
|
||||
|
||||
Reference in New Issue
Block a user