All IDE code uses VirtualFileFinder instead of KotlinClassFinder + proper service discovery
This commit is contained in:
+1
-1
@@ -87,7 +87,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
||||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||||
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
|
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
|
||||||
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
|
||||||
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
|
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
|
||||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||||
|
|||||||
+1
-1
@@ -159,7 +159,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
||||||
this.namespaceFactory = new NamespaceFactoryImpl();
|
this.namespaceFactory = new NamespaceFactoryImpl();
|
||||||
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
|
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
|
||||||
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
|
||||||
this.declarationResolver = new DeclarationResolver();
|
this.declarationResolver = new DeclarationResolver();
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
|
|||||||
+9
@@ -16,12 +16,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.kotlin;
|
package org.jetbrains.jet.lang.resolve.kotlin;
|
||||||
|
|
||||||
|
import com.intellij.openapi.components.ServiceManager;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
public interface VirtualFileFinder extends KotlinClassFinder {
|
public interface VirtualFileFinder extends KotlinClassFinder {
|
||||||
|
class SERVICE {
|
||||||
|
@NotNull
|
||||||
|
public static VirtualFileFinder getInstance(@NotNull Project project) {
|
||||||
|
return ServiceManager.getService(project, VirtualFileFinder.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: support scope
|
// TODO: support scope
|
||||||
@Nullable
|
@Nullable
|
||||||
VirtualFile findVirtualFile(@NotNull FqName className);
|
VirtualFile findVirtualFile(@NotNull FqName className);
|
||||||
|
|||||||
-7
@@ -25,13 +25,6 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
|||||||
|
|
||||||
public interface KotlinClassFinder {
|
public interface KotlinClassFinder {
|
||||||
|
|
||||||
class SERVICE {
|
|
||||||
@NotNull
|
|
||||||
public static KotlinClassFinder getInstance(@NotNull Project project) {
|
|
||||||
return ServiceManager.getService(project, KotlinClassFinder.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
KotlinJvmBinaryClass findKotlinClass(@NotNull FqName fqName);
|
KotlinJvmBinaryClass findKotlinClass(@NotNull FqName fqName);
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicField(JavaPackageFragmentProviderImpl.class);
|
generator.addPublicField(JavaPackageFragmentProviderImpl.class);
|
||||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||||
new GivenExpression(
|
new GivenExpression(
|
||||||
"com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)"));
|
||||||
generator.configure("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm",
|
generator.configure("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm",
|
||||||
GenerateInjectors.class);
|
GenerateInjectors.class);
|
||||||
return generator;
|
return generator;
|
||||||
@@ -161,7 +161,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicField(JavaDescriptorResolver.class);
|
generator.addPublicField(JavaDescriptorResolver.class);
|
||||||
generator.addField(JavaPackageFragmentProviderImpl.class);
|
generator.addField(JavaPackageFragmentProviderImpl.class);
|
||||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||||
new GivenExpression("com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
new GivenExpression(VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)"));
|
||||||
generator.addField(true, ModuleDescriptorImpl.class, "module",
|
generator.addField(true, ModuleDescriptorImpl.class, "module",
|
||||||
new GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"));
|
new GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"));
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.descriptors.serialization.*;
|
import org.jetbrains.jet.descriptors.serialization.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaResolverPsiUtils;
|
import org.jetbrains.jet.lang.resolve.java.JavaResolverPsiUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder;
|
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
||||||
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -118,7 +118,7 @@ public class JetFromJavaDescriptorHelper {
|
|||||||
private static String[] getAnnotationDataForKotlinClass(@NotNull PsiClass psiClass) {
|
private static String[] getAnnotationDataForKotlinClass(@NotNull PsiClass psiClass) {
|
||||||
VirtualFile virtualFile = getVirtualFileForPsiClass(psiClass);
|
VirtualFile virtualFile = getVirtualFileForPsiClass(psiClass);
|
||||||
if (virtualFile != null) {
|
if (virtualFile != null) {
|
||||||
KotlinJvmBinaryClass kotlinClass = KotlinClassFinder.SERVICE.getInstance(psiClass.getProject()).createKotlinClass(virtualFile);
|
KotlinJvmBinaryClass kotlinClass = VirtualFileFinder.SERVICE.getInstance(psiClass.getProject()).createKotlinClass(virtualFile);
|
||||||
KotlinClassHeader header = kotlinClass.getClassHeader();
|
KotlinClassHeader header = kotlinClass.getClassHeader();
|
||||||
if (header instanceof SerializedDataHeader) {
|
if (header instanceof SerializedDataHeader) {
|
||||||
return ((SerializedDataHeader) header).getAnnotationData();
|
return ((SerializedDataHeader) header).getAnnotationData();
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ import org.jetbrains.jet.lang.psi.JetFile;
|
|||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
import org.jetbrains.jet.lang.resolve.MemberComparator;
|
import org.jetbrains.jet.lang.resolve.MemberComparator;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder;
|
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
||||||
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -68,7 +68,7 @@ public final class DecompiledDataFactory {
|
|||||||
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, new BindingTraceContext());
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, new BindingTraceContext());
|
||||||
this.javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
this.javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
KotlinJvmBinaryClass kotlinClass = KotlinClassFinder.SERVICE.getInstance(project).createKotlinClass(classFile);
|
KotlinJvmBinaryClass kotlinClass = VirtualFileFinder.SERVICE.getInstance(project).createKotlinClass(classFile);
|
||||||
this.classFqName = kotlinClass.getClassName().getFqNameForClassNameWithoutDollars();
|
this.classFqName = kotlinClass.getClassName().getFqNameForClassNameWithoutDollars();
|
||||||
|
|
||||||
KotlinClassHeader header = kotlinClass.getClassHeader();
|
KotlinClassHeader header = kotlinClass.getClassHeader();
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.plugin.libraries;
|
package org.jetbrains.jet.plugin.libraries;
|
||||||
|
|
||||||
import com.intellij.openapi.components.ServiceManager;
|
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
@@ -100,7 +99,7 @@ public final class DecompiledNavigationUtils {
|
|||||||
if (containerFqName == null) {
|
if (containerFqName == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
VirtualFileFinder fileFinder = ServiceManager.getService(project, VirtualFileFinder.class);
|
VirtualFileFinder fileFinder = VirtualFileFinder.SERVICE.getInstance(project);
|
||||||
VirtualFile virtualFile = fileFinder.findVirtualFile(containerFqName);
|
VirtualFile virtualFile = fileFinder.findVirtualFile(containerFqName);
|
||||||
if (virtualFile == null) {
|
if (virtualFile == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ import com.intellij.openapi.fileTypes.StdFileTypes;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder;
|
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
||||||
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
|
||||||
|
|
||||||
public final class DecompiledUtils {
|
public final class DecompiledUtils {
|
||||||
@@ -31,7 +31,7 @@ public final class DecompiledUtils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//TODO: check index
|
//TODO: check index
|
||||||
KotlinJvmBinaryClass kotlinClass = KotlinClassFinder.SERVICE.getInstance(project).createKotlinClass(file);
|
KotlinJvmBinaryClass kotlinClass = VirtualFileFinder.SERVICE.getInstance(project).createKotlinClass(file);
|
||||||
return kotlinClass.getClassHeader() instanceof SerializedDataHeader;
|
return kotlinClass.getClassHeader() instanceof SerializedDataHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import com.intellij.openapi.vfs.VirtualFile;
|
|||||||
import com.intellij.util.indexing.*;
|
import com.intellij.util.indexing.*;
|
||||||
import com.intellij.util.io.KeyDescriptor;
|
import com.intellij.util.io.KeyDescriptor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder;
|
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
||||||
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.IncompatibleAnnotationHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.IncompatibleAnnotationHeader;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -76,7 +76,7 @@ public final class KotlinClassFileIndex extends ScalarIndexExtension<FqName> {
|
|||||||
@Override
|
@Override
|
||||||
public Map<FqName, Void> map(FileContent inputData) {
|
public Map<FqName, Void> map(FileContent inputData) {
|
||||||
try {
|
try {
|
||||||
KotlinJvmBinaryClass kotlinClass = KotlinClassFinder.SERVICE.getInstance(inputData.getProject())
|
KotlinJvmBinaryClass kotlinClass = VirtualFileFinder.SERVICE.getInstance(inputData.getProject())
|
||||||
.createKotlinClass(inputData.getFile());
|
.createKotlinClass(inputData.getFile());
|
||||||
KotlinClassHeader header = kotlinClass.getClassHeader();
|
KotlinClassHeader header = kotlinClass.getClassHeader();
|
||||||
if (header != null && !(header instanceof IncompatibleAnnotationHeader)) {
|
if (header != null && !(header instanceof IncompatibleAnnotationHeader)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user