JavaDescriptorResolver always uses lazy mode
This commit is contained in:
committed by
Alexander Udalov
parent
76c722b81c
commit
9f918d48b5
+7
-115
@@ -27,22 +27,11 @@ import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProviderImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -61,22 +50,11 @@ public class InjectorForJavaDescriptorResolver {
|
||||
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
|
||||
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
|
||||
private final JavaDescriptorResolver javaDescriptorResolver;
|
||||
private final JavaPackageFragmentProviderImpl javaPackageFragmentProvider;
|
||||
private final JavaPackageFragmentProvider javaPackageFragmentProvider;
|
||||
private final VirtualFileFinder virtualFileFinder;
|
||||
private final ModuleDescriptorImpl module;
|
||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||
private final JavaClassResolver javaClassResolver;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||
private final JavaFunctionResolver javaFunctionResolver;
|
||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||
private final JavaTypeTransformer javaTypeTransformer;
|
||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||
private final JavaMemberResolver javaMemberResolver;
|
||||
private final JavaConstructorResolver javaConstructorResolver;
|
||||
private final JavaPropertyResolver javaPropertyResolver;
|
||||
private final JavaSupertypeResolver javaSupertypeResolver;
|
||||
|
||||
public InjectorForJavaDescriptorResolver(
|
||||
@NotNull Project project,
|
||||
@@ -92,76 +70,25 @@ public class InjectorForJavaDescriptorResolver {
|
||||
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
|
||||
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
|
||||
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
|
||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||
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.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||
this.javaClassResolver = new JavaClassResolver();
|
||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(storageManager, getJavaClassFinder(), psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, deserializedDescriptorResolver, virtualFileFinder, getModule());
|
||||
this.javaPackageFragmentProvider = javaDescriptorResolver.getPackageFragmentProvider();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager);
|
||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||
this.javaMemberResolver = new JavaMemberResolver();
|
||||
this.javaConstructorResolver = new JavaConstructorResolver();
|
||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
||||
|
||||
this.javaClassFinder.setProject(project);
|
||||
|
||||
traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||
|
||||
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
||||
|
||||
traceBasedErrorReporter.setTrace(bindingTrace);
|
||||
|
||||
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
|
||||
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
|
||||
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||
this.javaDescriptorResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||
this.javaDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
this.javaDescriptorResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
this.javaDescriptorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
this.javaDescriptorResolver.setJavaClassFinder(javaClassFinder);
|
||||
this.javaDescriptorResolver.setJavaResolverCache(traceBasedJavaResolverCache);
|
||||
this.javaDescriptorResolver.setKotlinClassFinder(virtualFileFinder);
|
||||
this.javaDescriptorResolver.setModule(module);
|
||||
this.javaDescriptorResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
|
||||
this.javaDescriptorResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
|
||||
this.javaDescriptorResolver.setStorageManager(storageManager);
|
||||
|
||||
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
|
||||
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
|
||||
javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
|
||||
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
|
||||
javaPackageFragmentProvider.setModule(module);
|
||||
|
||||
javaAnnotationResolver.setArgumentResolver(javaAnnotationArgumentResolver);
|
||||
javaAnnotationResolver.setClassResolver(javaClassResolver);
|
||||
javaAnnotationResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
|
||||
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||
javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||
javaClassResolver.setFunctionResolver(javaFunctionResolver);
|
||||
javaClassResolver.setJavaClassFinder(javaClassFinder);
|
||||
javaClassResolver.setKotlinClassFinder(virtualFileFinder);
|
||||
javaClassResolver.setMemberResolver(javaMemberResolver);
|
||||
javaClassResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
|
||||
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
|
||||
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||
|
||||
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
@@ -172,41 +99,6 @@ public class InjectorForJavaDescriptorResolver {
|
||||
annotationDescriptorDeserializer.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
|
||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
|
||||
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
||||
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||
|
||||
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaTypeTransformer.setClassResolver(javaClassResolver);
|
||||
|
||||
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaMemberResolver.setClassResolver(javaClassResolver);
|
||||
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
|
||||
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
|
||||
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
|
||||
|
||||
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
||||
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||
|
||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
}
|
||||
|
||||
+11
-119
@@ -37,7 +37,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProviderImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||
@@ -57,19 +57,8 @@ import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -98,7 +87,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
|
||||
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
|
||||
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
|
||||
private final JavaPackageFragmentProviderImpl javaPackageFragmentProvider;
|
||||
private final JavaPackageFragmentProvider javaPackageFragmentProvider;
|
||||
private final VirtualFileFinder virtualFileFinder;
|
||||
private final DeclarationResolver declarationResolver;
|
||||
private final AnnotationResolver annotationResolver;
|
||||
@@ -118,19 +107,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final DelegatedPropertyResolver delegatedPropertyResolver;
|
||||
private final FunctionAnalyzerExtension functionAnalyzerExtension;
|
||||
private final ScriptBodyResolver scriptBodyResolver;
|
||||
private final JavaClassResolver javaClassResolver;
|
||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||
private final JavaTypeTransformer javaTypeTransformer;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||
private final JavaFunctionResolver javaFunctionResolver;
|
||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||
private final JavaMemberResolver javaMemberResolver;
|
||||
private final JavaConstructorResolver javaConstructorResolver;
|
||||
private final JavaPropertyResolver javaPropertyResolver;
|
||||
private final JavaSupertypeResolver javaSupertypeResolver;
|
||||
|
||||
public InjectorForTopDownAnalyzerForJvm(
|
||||
@NotNull Project project,
|
||||
@@ -150,17 +128,18 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||
this.bindingTrace = bindingTrace;
|
||||
this.moduleDescriptor = moduleDescriptor;
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||
this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance();
|
||||
this.javaClassFinder = new JavaClassFinderImpl();
|
||||
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
||||
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
||||
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
|
||||
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
|
||||
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
||||
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
||||
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
|
||||
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(storageManager, javaClassFinder, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, deserializedDescriptorResolver, virtualFileFinder, getModuleDescriptor());
|
||||
this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance();
|
||||
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
||||
this.javaPackageFragmentProvider = javaDescriptorResolver.getPackageFragmentProvider();
|
||||
this.declarationResolver = new DeclarationResolver();
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
this.callResolver = new CallResolver();
|
||||
@@ -179,19 +158,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
||||
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.javaClassResolver = new JavaClassResolver();
|
||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager);
|
||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||
this.javaMemberResolver = new JavaMemberResolver();
|
||||
this.javaConstructorResolver = new JavaConstructorResolver();
|
||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
||||
|
||||
this.topDownAnalyzer.setBodyResolver(bodyResolver);
|
||||
this.topDownAnalyzer.setContext(topDownAnalysisContext);
|
||||
@@ -229,39 +196,18 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.descriptorResolver.setStorageManager(storageManager);
|
||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||
|
||||
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||
this.javaDescriptorResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||
this.javaDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
this.javaDescriptorResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
this.javaDescriptorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
this.javaDescriptorResolver.setJavaClassFinder(javaClassFinder);
|
||||
this.javaDescriptorResolver.setJavaResolverCache(traceBasedJavaResolverCache);
|
||||
this.javaDescriptorResolver.setKotlinClassFinder(virtualFileFinder);
|
||||
this.javaDescriptorResolver.setModule(moduleDescriptor);
|
||||
this.javaDescriptorResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
|
||||
this.javaDescriptorResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
|
||||
this.javaDescriptorResolver.setStorageManager(storageManager);
|
||||
|
||||
javaClassFinder.setProject(project);
|
||||
|
||||
traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||
|
||||
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
||||
|
||||
traceBasedErrorReporter.setTrace(bindingTrace);
|
||||
|
||||
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
|
||||
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
|
||||
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
|
||||
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
|
||||
javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
|
||||
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
|
||||
javaPackageFragmentProvider.setModule(moduleDescriptor);
|
||||
|
||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||
declarationResolver.setContext(topDownAnalysisContext);
|
||||
declarationResolver.setDescriptorResolver(descriptorResolver);
|
||||
@@ -332,27 +278,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||
scriptBodyResolver.setTrace(bindingTrace);
|
||||
|
||||
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||
javaClassResolver.setFunctionResolver(javaFunctionResolver);
|
||||
javaClassResolver.setJavaClassFinder(javaClassFinder);
|
||||
javaClassResolver.setKotlinClassFinder(virtualFileFinder);
|
||||
javaClassResolver.setMemberResolver(javaMemberResolver);
|
||||
javaClassResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
|
||||
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
|
||||
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||
|
||||
javaAnnotationResolver.setArgumentResolver(javaAnnotationArgumentResolver);
|
||||
javaAnnotationResolver.setClassResolver(javaClassResolver);
|
||||
javaAnnotationResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
|
||||
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||
javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaTypeTransformer.setClassResolver(javaClassResolver);
|
||||
|
||||
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
@@ -363,39 +288,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
annotationDescriptorDeserializer.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
|
||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
|
||||
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
||||
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||
|
||||
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaMemberResolver.setClassResolver(javaClassResolver);
|
||||
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
|
||||
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
|
||||
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
|
||||
|
||||
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
||||
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||
|
||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
}
|
||||
|
||||
+49
-126
@@ -38,86 +38,55 @@ import javax.inject.Inject;
|
||||
import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES;
|
||||
|
||||
public class JavaDescriptorResolver implements DependencyClassByQualifiedNameResolver {
|
||||
private final boolean LAZY;
|
||||
|
||||
{
|
||||
LAZY = true;
|
||||
}
|
||||
|
||||
public static final Name JAVA_ROOT = Name.special("<java_root>");
|
||||
|
||||
private StorageManager storageManager;
|
||||
private JavaClassResolver classResolver;
|
||||
private JavaPackageFragmentProvider packageFragmentProvider;
|
||||
private JavaClassFinder javaClassFinder;
|
||||
private ExternalAnnotationResolver externalAnnotationResolver;
|
||||
private LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private ExternalSignatureResolver externalSignatureResolver;
|
||||
private ErrorReporter errorReporter;
|
||||
private MethodSignatureChecker signatureChecker;
|
||||
private JavaResolverCache javaResolverCache;
|
||||
private DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private KotlinClassFinder kotlinClassFinder;
|
||||
private ModuleDescriptor module;
|
||||
private final ModuleDescriptor module;
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
|
||||
@Inject
|
||||
public void setStorageManager(StorageManager storageManager) {
|
||||
this.storageManager = storageManager;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setClassResolver(JavaClassResolver classResolver) {
|
||||
this.classResolver = classResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setPackageFragmentProvider(JavaPackageFragmentProvider packageFragmentProvider) {
|
||||
this.packageFragmentProvider = packageFragmentProvider;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setJavaClassFinder(JavaClassFinder javaClassFinder) {
|
||||
this.javaClassFinder = javaClassFinder;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setExternalAnnotationResolver(ExternalAnnotationResolver externalAnnotationResolver) {
|
||||
this.externalAnnotationResolver = externalAnnotationResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setExternalSignatureResolver(ExternalSignatureResolver externalSignatureResolver) {
|
||||
this.externalSignatureResolver = externalSignatureResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setErrorReporter(ErrorReporter errorReporter) {
|
||||
this.errorReporter = errorReporter;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setSignatureChecker(MethodSignatureChecker signatureChecker) {
|
||||
this.signatureChecker = signatureChecker;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setJavaResolverCache(JavaResolverCache javaResolverCache) {
|
||||
this.javaResolverCache = javaResolverCache;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setDeserializedDescriptorResolver(DeserializedDescriptorResolver deserializedDescriptorResolver) {
|
||||
this.deserializedDescriptorResolver = deserializedDescriptorResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setKotlinClassFinder(KotlinClassFinder kotlinClassFinder) {
|
||||
this.kotlinClassFinder = kotlinClassFinder;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setModule(@NotNull ModuleDescriptor module) {
|
||||
public JavaDescriptorResolver(
|
||||
StorageManager storageManager,
|
||||
JavaClassFinder javaClassFinder,
|
||||
ExternalAnnotationResolver externalAnnotationResolver,
|
||||
ExternalSignatureResolver externalSignatureResolver,
|
||||
ErrorReporter errorReporter,
|
||||
MethodSignatureChecker signatureChecker,
|
||||
final JavaResolverCache javaResolverCache,
|
||||
DeserializedDescriptorResolver deserializedDescriptorResolver,
|
||||
KotlinClassFinder kotlinClassFinder,
|
||||
ModuleDescriptor module
|
||||
) {
|
||||
this.module = module;
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(
|
||||
new GlobalJavaResolverContext(
|
||||
storageManager,
|
||||
javaClassFinder,
|
||||
kotlinClassFinder,
|
||||
deserializedDescriptorResolver,
|
||||
new LazyJavaClassResolver() {
|
||||
@Override
|
||||
public ClassDescriptor resolveClass(JavaClass aClass) {
|
||||
FqName fqName = aClass.getFqName();
|
||||
if (fqName != null) {
|
||||
return resolveClassByFqName(fqName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassDescriptor resolveClassByFqName(FqName fqName) {
|
||||
return javaResolverCache.getClassResolvedFromSource(fqName);
|
||||
}
|
||||
},
|
||||
externalAnnotationResolver,
|
||||
externalSignatureResolver,
|
||||
errorReporter,
|
||||
signatureChecker,
|
||||
javaResolverCache,
|
||||
this
|
||||
),
|
||||
module
|
||||
);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -125,49 +94,14 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
return module;
|
||||
}
|
||||
|
||||
private LazyJavaPackageFragmentProvider getLazyJavaPackageFragmentProvider() {
|
||||
if (lazyJavaPackageFragmentProvider == null) {
|
||||
lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(
|
||||
new GlobalJavaResolverContext(
|
||||
storageManager,
|
||||
javaClassFinder,
|
||||
kotlinClassFinder,
|
||||
deserializedDescriptorResolver,
|
||||
new LazyJavaClassResolver() {
|
||||
@Override
|
||||
public ClassDescriptor resolveClass(JavaClass aClass) {
|
||||
FqName fqName = aClass.getFqName();
|
||||
if (fqName != null) {
|
||||
return resolveClassByFqName(fqName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassDescriptor resolveClassByFqName(FqName fqName) {
|
||||
return javaResolverCache.getClassResolvedFromSource(fqName);
|
||||
}
|
||||
},
|
||||
externalAnnotationResolver,
|
||||
externalSignatureResolver,
|
||||
errorReporter,
|
||||
signatureChecker,
|
||||
javaResolverCache,
|
||||
this
|
||||
),
|
||||
module
|
||||
);
|
||||
}
|
||||
@NotNull
|
||||
public LazyJavaPackageFragmentProvider getPackageFragmentProvider() {
|
||||
return lazyJavaPackageFragmentProvider;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ClassDescriptor resolveClass(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
|
||||
if (LAZY) {
|
||||
return getLazyJavaPackageFragmentProvider().getClass(qualifiedName);
|
||||
}
|
||||
return classResolver.resolveClass(qualifiedName, searchRule);
|
||||
return getPackageFragmentProvider().getClass(qualifiedName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -175,19 +109,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
return resolveClass(qualifiedName, IGNORE_KOTLIN_SOURCES);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JavaPackageFragmentProvider getPackageFragmentProvider() {
|
||||
if (LAZY) {
|
||||
return getLazyJavaPackageFragmentProvider();
|
||||
}
|
||||
return packageFragmentProvider;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PackageFragmentDescriptor getPackageFragment(@NotNull FqName fqName) {
|
||||
if (LAZY) {
|
||||
return getLazyJavaPackageFragmentProvider().getPackageFragment(fqName);
|
||||
}
|
||||
return packageFragmentProvider.getPackageFragment(fqName);
|
||||
return getPackageFragmentProvider().getPackageFragment(fqName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ public class GenerateInjectors {
|
||||
generator.addField(PsiBasedMethodSignatureChecker.class);
|
||||
generator.addField(PsiBasedExternalAnnotationResolver.class);
|
||||
generator.addField(MutablePackageFragmentProvider.class);
|
||||
generator.addField(JavaPackageFragmentProviderImpl.class);
|
||||
generator.addField(false, JavaPackageFragmentProvider.class, null, new GivenExpression("javaDescriptorResolver.getPackageFragmentProvider()"));
|
||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||
new GivenExpression(
|
||||
VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)"));
|
||||
@@ -161,7 +161,7 @@ public class GenerateInjectors {
|
||||
generator.addField(PsiBasedMethodSignatureChecker.class);
|
||||
generator.addField(PsiBasedExternalAnnotationResolver.class);
|
||||
generator.addPublicField(JavaDescriptorResolver.class);
|
||||
generator.addField(JavaPackageFragmentProviderImpl.class);
|
||||
generator.addField(false, JavaPackageFragmentProvider.class, null, new GivenExpression("javaDescriptorResolver.getPackageFragmentProvider()"));
|
||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||
new GivenExpression(VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)"));
|
||||
generator.addField(true, ModuleDescriptorImpl.class, "module",
|
||||
|
||||
Reference in New Issue
Block a user