Retrieve JavaElementFinder from Project's extensions
This commit is contained in:
@@ -94,7 +94,7 @@ public class JetCoreEnvironment {
|
||||
|
||||
Extensions.getArea(project)
|
||||
.getExtensionPoint(PsiElementFinder.EP_NAME)
|
||||
.registerExtension(new JavaElementFinder(project));
|
||||
.registerExtension(new JavaElementFinder(project, cliLightClassGenerationSupport));
|
||||
|
||||
// This extension point should be registered in JavaCoreApplicationEnvironment
|
||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClsCustomNavigationPolicy.EP_NAME,
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.jet.asJava;
|
||||
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.psi.PsiClass;
|
||||
@@ -40,12 +41,28 @@ import java.util.*;
|
||||
import static org.jetbrains.jet.codegen.CodegenUtil.getLocalNameForObject;
|
||||
|
||||
public class JavaElementFinder extends PsiElementFinder implements JavaPsiFacadeKotlinHacks.KotlinFinderMarker {
|
||||
|
||||
@NotNull
|
||||
public static JavaElementFinder getInstance(@NotNull Project project) {
|
||||
PsiElementFinder[] extensions = Extensions.getArea(project).getExtensionPoint(PsiElementFinder.EP_NAME).getExtensions();
|
||||
for (PsiElementFinder extension : extensions) {
|
||||
if (extension instanceof JavaElementFinder) {
|
||||
return (JavaElementFinder) extension;
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException(JavaElementFinder.class.getSimpleName() + " is not found for project " + project);
|
||||
}
|
||||
|
||||
private final Project project;
|
||||
private final PsiManager psiManager;
|
||||
|
||||
private final WeakHashMap<GlobalSearchScope, Collection<JetFile>> jetFiles = new WeakHashMap<GlobalSearchScope, Collection<JetFile>>();
|
||||
|
||||
public JavaElementFinder(Project project) {
|
||||
public JavaElementFinder(
|
||||
@NotNull Project project,
|
||||
@SuppressWarnings("UnusedParameters") // This parameter simply ensures that there is some LightClassGenerationSupport for the project
|
||||
@NotNull LightClassGenerationSupport lightClassGenerationSupport
|
||||
) {
|
||||
this.project = project;
|
||||
psiManager = PsiManager.getInstance(project);
|
||||
|
||||
|
||||
@@ -42,7 +42,8 @@ public class JavaElementFinderTest extends JetLiteFixture {
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
finder = new JavaElementFinder(getProject());
|
||||
|
||||
finder = new JavaElementFinder(getProject(), null);
|
||||
}
|
||||
|
||||
public void testFromEnumEntry() {
|
||||
|
||||
@@ -57,11 +57,9 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
||||
private static final PsiMethod[] NO_METHODS = new PsiMethod[0];
|
||||
private static final PsiField[] NO_FIELDS = new PsiField[0];
|
||||
private final Project project;
|
||||
private final JavaElementFinder javaElementFinder;
|
||||
|
||||
public JetShortNamesCache(Project project) {
|
||||
this.project = project;
|
||||
this.javaElementFinder = new JavaElementFinder(project);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,7 +89,7 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
||||
if (classOrObject instanceof JetNamedDeclaration) {
|
||||
FqName fqName = JetPsiUtil.getFQName((JetNamedDeclaration) classOrObject);
|
||||
if (fqName != null && fqName.shortName().getName().equals(name)) {
|
||||
PsiClass psiClass = javaElementFinder.findClass(fqName.getFqName(), scope);
|
||||
PsiClass psiClass = JavaElementFinder.getInstance(project).findClass(fqName.getFqName(), scope);
|
||||
if (psiClass != null) {
|
||||
result.add(psiClass);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user