From 88091efcbf3ebca7756add00e760b001ff72d9a3 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 7 Jan 2015 13:49:19 +0100 Subject: [PATCH] SSR: find annotations in more places --- .../compiler/JavaCompilingVisitor.java | 12 ----- .../strategies/ExprMatchingStrategy.java | 21 ++++++++ .../strategies/SymbolMatchingStrategy.java | 54 ------------------- .../StructuralSearchTest.java | 4 +- 4 files changed, 24 insertions(+), 67 deletions(-) delete mode 100644 java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/SymbolMatchingStrategy.java diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java index 1733ead28937..26b11476cf39 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java @@ -589,18 +589,6 @@ public class JavaCompilingVisitor extends JavaRecursiveElementWalkingVisitor { } private MatchingStrategy findStrategy(PsiElement el) { - // identify matching strategy - final MatchingHandler handler = myCompilingVisitor.getContext().getPattern().getHandler(el); - - //if (handler instanceof SubstitutionHandler) { - // final SubstitutionHandler shandler = (SubstitutionHandler) handler; - if (handler.getFilter() instanceof SymbolNodeFilter || - handler.getFilter() instanceof TypedSymbolNodeFilter - ) { - return SymbolMatchingStrategy.getInstance(); - } - //} - if (el instanceof PsiDocComment) { return JavaDocMatchingStrategy.getInstance(); } diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/ExprMatchingStrategy.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/ExprMatchingStrategy.java index d19205ff3317..4a38b7f40193 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/ExprMatchingStrategy.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/ExprMatchingStrategy.java @@ -7,6 +7,27 @@ import com.intellij.psi.*; */ public class ExprMatchingStrategy extends MatchingStrategyBase { + @Override + public void visitTypeElement(PsiTypeElement type) { + result = true; + } + + @Override public void visitReferenceParameterList(PsiReferenceParameterList psiReferenceParameterList) { + result = true; + } + + @Override public void visitReferenceElement(PsiJavaCodeReferenceElement psiJavaCodeReferenceElement) { + result = true; + } + + @Override public void visitTypeParameterList(PsiTypeParameterList psiTypeParameterList) { + result = true; + } + + @Override public void visitReferenceList(final PsiReferenceList list) { + result = true; + } + @Override public void visitAnnotation(final PsiAnnotation annotation) { result = true; } diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/SymbolMatchingStrategy.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/SymbolMatchingStrategy.java deleted file mode 100644 index f31ee37e8aed..000000000000 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/SymbolMatchingStrategy.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.intellij.structuralsearch.impl.matcher.strategies; - -import com.intellij.psi.*; - -/** - * CommonStrategy to match symbols - */ -public class SymbolMatchingStrategy extends ExprMatchingStrategy { - @Override public void visitReferenceList(final PsiReferenceList list) { - result = true; - } - - @Override public void visitAnnotation(final PsiAnnotation annotation) { - result = true; - } - - @Override public void visitAnnotationParameterList(final PsiAnnotationParameterList list) { - result = true; - } - - @Override public void visitModifierList(final PsiModifierList list) { - result = true; - } - - @Override public void visitNameValuePair(final PsiNameValuePair pair) { - result = true; - } - - @Override public void visitTypeParameterList(PsiTypeParameterList psiTypeParameterList) { - result = true; - } - - @Override public void visitTypeElement(PsiTypeElement psiTypeElement) { - result = true; - } - - @Override public void visitReferenceElement(PsiJavaCodeReferenceElement psiJavaCodeReferenceElement) { - result = true; - } - - @Override public void visitReferenceParameterList(PsiReferenceParameterList psiReferenceParameterList) { - result = true; - } - - private SymbolMatchingStrategy() {} - - private static class SymbolMatchingStrategyHolder { - private static final SymbolMatchingStrategy instance = new SymbolMatchingStrategy(); - } - - public static MatchingStrategy getInstance() { - return SymbolMatchingStrategyHolder.instance; - } -} diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java index f5f6ee36de49..6398627faff1 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java @@ -2445,12 +2445,14 @@ public class StructuralSearchTest extends StructuralSearchTestCase { "}\n"; assertEquals("Find all annotations", 4, findMatchesCount(source2, "@'_Annotation")); - String source3 = "class A {\n" + + String source3 = "class A<@HH T> extends @HH Object {\n" + " @HH final String s = (@HH String) new @HH Object();\n" + " final String t = (String) new Object();\n" + + " Map<@HH String, @HH List<@HH String>> map;\n" + "}\n"; assertEquals("Find annotated casts", 1, findMatchesCount(source3, "(@'_A 'Cast) '_Expression")); assertEquals("Find annotated new expressions", 1, findMatchesCount(source3, "new @'_A 'Type()")); + assertEquals("Find all annotations 2", 8, findMatchesCount(source3, "@'_Annotation")); // package-info.java final String source4 = "/**\n" +