IDEA-133101 (SSR does not find comment inside expressions, variables and many more)

This commit is contained in:
Bas Leijdekkers
2014-11-19 15:49:41 +01:00
parent 234d530592
commit 86c1f19146
2 changed files with 78 additions and 7 deletions

View File

@@ -1,13 +1,7 @@
package com.intellij.structuralsearch.impl.matcher.strategies;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiClassInitializer;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.*;
/**
* Java doc matching strategy
*/
public final class CommentMatchingStrategy extends MatchingStrategyBase {
@Override public void visitClass(final PsiClass clazz) {
result = true;
@@ -25,6 +19,66 @@ public final class CommentMatchingStrategy extends MatchingStrategyBase {
result = true;
}
@Override public void visitExpression(PsiExpression expression) {
result = true;
}
@Override public void visitExpressionList(PsiExpressionList list) {
result = true;
}
@Override public void visitVariable(PsiVariable variable) {
result = true;
}
@Override public void visitModifierList(PsiModifierList list) {
result = true;
}
@Override public void visitParameterList(PsiParameterList list) {
result = true;
}
@Override public void visitReferenceList(PsiReferenceList list) {
result = true;
}
@Override public void visitReferenceParameterList(PsiReferenceParameterList list) {
result = true;
}
@Override public void visitTypeElement(PsiTypeElement type) {
result = true;
}
@Override public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
result = true;
}
@Override public void visitTypeParameterList(PsiTypeParameterList list) {
result = true;
}
@Override public void visitResourceList(PsiResourceList resourceList) {
result = true;
}
@Override public void visitAnnotation(PsiAnnotation annotation) {
result = true;
}
@Override public void visitAnnotationParameterList(PsiAnnotationParameterList list) {
result = true;
}
@Override public void visitAnnotationArrayInitializer(PsiArrayInitializerMemberValue initializer) {
result = true;
}
@Override public void visitNameValuePair(PsiNameValuePair pair) {
result = true;
}
private CommentMatchingStrategy() {}
private static class CommentMatchingStrategyHolder {

View File

@@ -2996,4 +2996,21 @@ public class StructuralSearchTest extends StructuralSearchTestCase {
String pattern = "new Foo.Bar();";
assertEquals("should find qualified with outer class", 1, findMatchesCount(source, pattern));
}
public void testFindCommentsEverywhere() {
String source = "abstract class A<T/*1*/> implements java.util.List<T/*2*/>, /*3*/java.io.Serializable {" +
" @SuppressWarnings({\"one\",/*10*/ \"two\"})" +
" public /*11*/ static void m(/*12*/) {" +
" System./*4*/out.println(/*5*/);" +
" A<String/*6*/> a1 = new A(){};" +
" int i = 1 + /*7*/ + 2;" +
" int i = 1 + /*7*/ + 2;" +
" try (java.io.FileInputStream /*8*/in = new java.io.FileInputStream(\"name\")) {" +
" } catch (java.lang./*9*/Exception e) {" +
" }" +
" }" +
"}";
String pattern = "/*$Text$*/";
assertEquals("should find comments in all the right places", 12, findMatchesCount(source, pattern));
}
}