mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 05:09:37 +07:00
IDEA-130949 (Structural Search does not support nested classes syntax)
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
package com.intellij.structuralsearch.impl.matcher;
|
||||
|
||||
import com.intellij.dupLocator.iterators.ArrayBackedNodeIterator;
|
||||
import com.intellij.dupLocator.iterators.NodeIterator;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -15,10 +16,8 @@ import com.intellij.structuralsearch.impl.matcher.filters.LexicalNodesFilter;
|
||||
import com.intellij.structuralsearch.impl.matcher.handlers.MatchPredicate;
|
||||
import com.intellij.structuralsearch.impl.matcher.handlers.MatchingHandler;
|
||||
import com.intellij.structuralsearch.impl.matcher.handlers.SubstitutionHandler;
|
||||
import com.intellij.dupLocator.iterators.ArrayBackedNodeIterator;
|
||||
import com.intellij.structuralsearch.impl.matcher.iterators.DocValuesIterator;
|
||||
import com.intellij.structuralsearch.impl.matcher.iterators.HierarchyNodeIterator;
|
||||
import com.intellij.dupLocator.iterators.NodeIterator;
|
||||
import com.intellij.structuralsearch.impl.matcher.predicates.NotPredicate;
|
||||
import com.intellij.structuralsearch.impl.matcher.predicates.RegExpPredicate;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -836,8 +835,9 @@ public class JavaMatchingVisitor extends JavaElementVisitor {
|
||||
}
|
||||
}
|
||||
final String text = stripTypeParameters(el.getText());
|
||||
if (text.indexOf('.') == -1 || !(el2 instanceof PsiJavaReference)) {
|
||||
return MatchUtils.compareWithNoDifferenceToPackage(text, stripTypeParameters(el2.getText()));
|
||||
final boolean equalsIgnorePackage = MatchUtils.compareWithNoDifferenceToPackage(text, stripTypeParameters(el2.getText()));
|
||||
if (equalsIgnorePackage || !(el2 instanceof PsiJavaReference)) {
|
||||
return equalsIgnorePackage;
|
||||
}
|
||||
else {
|
||||
PsiElement element2 = ((PsiJavaReference)el2).resolve();
|
||||
|
||||
@@ -2974,4 +2974,15 @@ public class StructuralSearchTest extends StructuralSearchTestCase {
|
||||
}
|
||||
assertNotNull(ex);
|
||||
}
|
||||
|
||||
public void testFindInnerClass() {
|
||||
String source = "class Foo {\n" +
|
||||
" static class Bar {}\n" +
|
||||
"}" +
|
||||
"class A {{" +
|
||||
" new Foo.Bar();" +
|
||||
"}}";
|
||||
String pattern = "new Foo.Bar();";
|
||||
assertEquals("should find qualified with outer class", 1, findMatchesCount(source, pattern));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user