From 681a58ab7b79f42d32ef207b27c2a7f7eef35920 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 22 Jan 2020 17:31:31 +0700 Subject: [PATCH] IDEA-230701 IDEA doesn't resolve pattern variable defined in labeled scope GitOrigin-RevId: afd36dfb5a20200bcab13a0efdc8ddf4884d959e --- .../impl/source/tree/java/PsiLabeledStatementImpl.java | 2 +- .../advHighlightingPatterns/InstanceOfControlFlow.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLabeledStatementImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLabeledStatementImpl.java index 14dee8b04c57..a6700056eeab 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLabeledStatementImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLabeledStatementImpl.java @@ -102,7 +102,7 @@ public class PsiLabeledStatementImpl extends CompositePsiElement implements PsiL @Override public boolean processDeclarations(@NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, @NotNull PsiElement place) { - if (lastParent != null && lastParent.getParent() != this){ + if (lastParent == null || lastParent.getParent() != this){ PsiElement[] children = getChildren(); for (PsiElement aChildren : children) { if (!aChildren.processDeclarations(processor, state, null, place)) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfControlFlow.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfControlFlow.java index 6ac423d006cb..0cef91829525 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfControlFlow.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatterns/InstanceOfControlFlow.java @@ -117,4 +117,12 @@ class X { } System.out.println("Found: "+s.trim()); } + + void testLabel() { + Object o = "hello"; + L0: if(!(o instanceof String s)) { + return; + } + System.out.println(s.length()); + } } \ No newline at end of file