SSR: fix multi-match of variable declaration and new expression (IDEA-242127)

GitOrigin-RevId: b073656f88f8d218b7ea6f9174690f5679a25da1
This commit is contained in:
Bas Leijdekkers
2020-05-29 19:44:17 +02:00
committed by intellij-monorepo-bot
parent c52de9807a
commit a4a9237e4f
2 changed files with 14 additions and 6 deletions

View File

@@ -441,14 +441,17 @@ public class JavaCompilingVisitor extends JavaRecursiveElementWalkingVisitor {
super.visitReferenceElement(reference);
final PsiElement parent = reference.getParent();
final MatchingHandler handler = myCompilingVisitor.getContext().getPattern().getHandler(reference);
if (parent != null && parent.getParent() instanceof PsiClass) {
GlobalCompilingVisitor.setFilter(myCompilingVisitor.getContext().getPattern().getHandler(reference), TypeFilter.getInstance());
GlobalCompilingVisitor.setFilter(handler, TypeFilter.getInstance());
}
else if (parent instanceof PsiNewExpression) {
final PsiNewExpression newExpression = (PsiNewExpression)parent;
if (newExpression.getArrayInitializer() != null) {
GlobalCompilingVisitor.setFilter(myCompilingVisitor.getContext().getPattern().getHandler(reference),
e -> e instanceof PsiJavaCodeReferenceElement || e instanceof PsiKeyword);
GlobalCompilingVisitor.setFilter(handler, e -> e instanceof PsiJavaCodeReferenceElement || e instanceof PsiKeyword);
}
else {
GlobalCompilingVisitor.setFilter(handler, e -> e instanceof PsiJavaCodeReferenceElement);
}
}
}