mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
javac ast indices: preform reference search inside source code only in tests (should fix tests on JDK 9)
This commit is contained in:
+24
-14
@@ -28,6 +28,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.injected.MyTestInjector;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.searches.FunctionalExpressionSearch;
|
||||
import com.intellij.psi.search.searches.MethodReferencesSearch;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
@@ -38,6 +39,7 @@ import com.intellij.util.Consumer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
@SkipSlowTestLocally
|
||||
public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
|
||||
@@ -79,54 +81,54 @@ public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
|
||||
public void testMethodUsageOnGetter() throws Exception {
|
||||
configureByFiles(getName(), getName() + "/Foo.java", getName() + "/FooFactory.java", getName() + "/Bar.java");
|
||||
PsiMethod methodToSearch = findClass("Foo").findMethodsByName("someMethod", false)[0];
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
myCompilerTester.rebuild();
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
}
|
||||
|
||||
public void testMethodUsageInClassHierarchy() throws Exception {
|
||||
configureByFiles(getName(), getName() + "/Bar.java", getName() + "/Foo.java");
|
||||
PsiMethod methodToSearch = findClass("Foo").findMethodsByName("someMethod", false)[0];
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
myCompilerTester.rebuild();
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
}
|
||||
|
||||
public void testMethodUsageInClassHierarchy2() throws Exception {
|
||||
configureByFiles(getName(), getName() + "/Bar.java", getName() + "/Foo.java");
|
||||
PsiMethod methodToSearch = myJavaFacade.findClass(CommonClassNames.JAVA_LANG_RUNNABLE).findMethodsByName("run", false)[0];
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
myCompilerTester.rebuild();
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
}
|
||||
|
||||
public void testLibMethodUsage() throws Exception {
|
||||
configureByFile(getName() + "/Foo.java");
|
||||
myCompilerTester.rebuild();
|
||||
PsiMethod methodToSearch = myJavaFacade.findClass(CommonClassNames.JAVA_UTIL_COLLECTIONS).findMethodsByName("emptyList", false)[0];
|
||||
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
|
||||
assertOneElement(searchMethodReferences(methodToSearch));
|
||||
}
|
||||
|
||||
public void testLibClassUsage() throws Exception {
|
||||
configureByFile(getName() + "/Foo.java");
|
||||
myCompilerTester.rebuild();
|
||||
PsiClass classForSearch = myJavaFacade.findClass("java.lang.System");
|
||||
assertOneElement(ReferencesSearch.search(classForSearch).findAll());
|
||||
assertOneElement(searchReferences(classForSearch));
|
||||
}
|
||||
|
||||
public void testLibClassInJavaDocUsage() throws Exception {
|
||||
configureByFile(getName() + "/Foo.java");
|
||||
myCompilerTester.rebuild();
|
||||
PsiClass classForSearch = myJavaFacade.findClass("java.lang.System");
|
||||
assertOneElement(ReferencesSearch.search(classForSearch).findAll());
|
||||
assertOneElement(searchReferences(classForSearch));
|
||||
}
|
||||
|
||||
public void testCompileTimeConstFindUsages() throws Exception {
|
||||
configureByFiles(getName(), getName() + "/Bar.java", getName() + "/Foo.java");
|
||||
PsiField classForSearch = findClass("Foo").findFieldByName("CONST", false);
|
||||
PsiElement referenceBefore = assertOneElement(ReferencesSearch.search(classForSearch).findAll()).getElement();
|
||||
PsiElement referenceBefore = assertOneElement(searchReferences(classForSearch)).getElement();
|
||||
myCompilerTester.rebuild();
|
||||
PsiElement referenceAfter = assertOneElement(ReferencesSearch.search(classForSearch).findAll()).getElement();
|
||||
PsiElement referenceAfter = assertOneElement(searchReferences(classForSearch)).getElement();
|
||||
assertTrue(referenceBefore == referenceAfter);
|
||||
}
|
||||
|
||||
@@ -135,7 +137,7 @@ public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
|
||||
configureByFile(getName() + "/Foo.java");
|
||||
myCompilerTester.rebuild();
|
||||
PsiClass classForSearch = myJavaFacade.findClass("java.lang.System");
|
||||
PsiReference reference = assertOneElement(ReferencesSearch.search(classForSearch).findAll());
|
||||
PsiReference reference = assertOneElement(searchReferences(classForSearch));
|
||||
assertTrue(InjectedLanguageManager.getInstance(getProject()).isInjectedFragment(reference.getElement().getContainingFile()));
|
||||
}
|
||||
|
||||
@@ -163,9 +165,9 @@ public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
|
||||
public void testOverloadedMethods() throws Exception {
|
||||
configureByFiles(getName(), getName() + "/Foo.java", getName() + "/A.java", getName() + "/B.java");
|
||||
PsiMethod[] methodsToSearch = findClass("Foo").findMethodsByName("bar", false);
|
||||
Arrays.stream(methodsToSearch).forEach((m) -> assertSize(2, MethodReferencesSearch.search(m, false).findAll()));
|
||||
Arrays.stream(methodsToSearch).forEach((m) -> assertSize(2, searchMethodReferences(m)));
|
||||
myCompilerTester.rebuild();
|
||||
Arrays.stream(methodsToSearch).forEach((m) -> assertSize(2, MethodReferencesSearch.search(m, false).findAll()));
|
||||
Arrays.stream(methodsToSearch).forEach((m) -> assertSize(2, searchMethodReferences(m)));
|
||||
}
|
||||
|
||||
private void doTestRunnableFindUsagesWithExcludesConfiguration(@NotNull Consumer<ExcludesConfiguration> excludesConfigurationPatcher,
|
||||
@@ -182,4 +184,12 @@ public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
|
||||
excludesConfiguration.removeAllExcludeEntryDescriptions();
|
||||
}
|
||||
}
|
||||
|
||||
private Collection<PsiReference> searchMethodReferences(@NotNull PsiMethod method) {
|
||||
return MethodReferencesSearch.search(method, GlobalSearchScope.projectScope(getProject()), false).findAll();
|
||||
}
|
||||
|
||||
private Collection<PsiReference> searchReferences(@NotNull PsiElement element) {
|
||||
return ReferencesSearch.search(element, GlobalSearchScope.projectScope(getProject())).findAll();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user