Introduce ModuleContext, ProjectContext and use it some of the APIs
This commit is contained in:
+26
-28
@@ -16,13 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.di;
|
||||
|
||||
import org.jetbrains.kotlin.context.ModuleContext;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.kotlin.context.GlobalContext;
|
||||
import org.jetbrains.kotlin.storage.StorageManager;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory;
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession;
|
||||
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider;
|
||||
@@ -85,13 +85,13 @@ import javax.annotation.PreDestroy;
|
||||
@SuppressWarnings("all")
|
||||
public class InjectorForLazyResolveWithJava {
|
||||
|
||||
private final ModuleContext moduleContext;
|
||||
private final KotlinBuiltIns kotlinBuiltIns;
|
||||
private final ModuleDescriptorImpl moduleDescriptor;
|
||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||
private final Project project;
|
||||
private final GlobalContext globalContext;
|
||||
private final StorageManager storageManager;
|
||||
private final BindingTrace bindingTrace;
|
||||
private final ModuleDescriptorImpl module;
|
||||
private final KotlinBuiltIns kotlinBuiltIns;
|
||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||
private final DeclarationProviderFactory declarationProviderFactory;
|
||||
private final ResolveSession resolveSession;
|
||||
private final ScopeProvider scopeProvider;
|
||||
@@ -149,23 +149,21 @@ public class InjectorForLazyResolveWithJava {
|
||||
private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader;
|
||||
|
||||
public InjectorForLazyResolveWithJava(
|
||||
@NotNull Project project,
|
||||
@NotNull GlobalContext globalContext,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull BindingTrace bindingTrace,
|
||||
@NotNull ModuleDescriptorImpl module,
|
||||
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
||||
@NotNull GlobalSearchScope moduleContentScope,
|
||||
@NotNull ModuleClassResolver moduleClassResolver
|
||||
) {
|
||||
this.project = project;
|
||||
this.globalContext = globalContext;
|
||||
this.storageManager = globalContext.getStorageManager();
|
||||
this.moduleContext = moduleContext;
|
||||
this.kotlinBuiltIns = moduleContext.getBuiltIns();
|
||||
this.moduleDescriptor = moduleContext.getModule();
|
||||
this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap();
|
||||
this.project = moduleContext.getProject();
|
||||
this.storageManager = moduleContext.getStorageManager();
|
||||
this.bindingTrace = bindingTrace;
|
||||
this.module = module;
|
||||
this.kotlinBuiltIns = module.getBuiltIns();
|
||||
this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap();
|
||||
this.declarationProviderFactory = declarationProviderFactory;
|
||||
this.resolveSession = new ResolveSession(project, globalContext, getModule(), declarationProviderFactory, bindingTrace);
|
||||
this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace);
|
||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||
this.moduleContentScope = moduleContentScope;
|
||||
this.moduleClassResolver = moduleClassResolver;
|
||||
@@ -181,9 +179,9 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.samConversionResolver = SamConversionResolverImpl.INSTANCE$;
|
||||
this.javaSourceElementFactory = new JavaSourceElementFactoryImpl();
|
||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver);
|
||||
this.reflectionTypes = new ReflectionTypes(getModule());
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule(), reflectionTypes);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
||||
this.reflectionTypes = new ReflectionTypes(moduleDescriptor);
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor);
|
||||
this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider();
|
||||
this.lazyResolveToken = new LazyResolveToken();
|
||||
this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct();
|
||||
@@ -200,7 +198,7 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||
this.dynamicTypesSettings = new DynamicTypesSettings();
|
||||
this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, getModule(), javaFlexibleTypeCapabilitiesProvider, storageManager, lazyResolveToken, dynamicTypesSettings);
|
||||
this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, lazyResolveToken, dynamicTypesSettings);
|
||||
this.forLoopConventionsChecker = new ForLoopConventionsChecker();
|
||||
this.fakeCallResolver = new FakeCallResolver(project, callResolver);
|
||||
this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns);
|
||||
@@ -212,13 +210,13 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.lazyDeclarationResolver = new LazyDeclarationResolver(globalContext, bindingTrace);
|
||||
this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace);
|
||||
this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver);
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.additionalFileScopeProvider = new AdditionalFileScopeProvider();
|
||||
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, getModule(), javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
|
||||
this.resolveSession.setAnnotationResolve(annotationResolver);
|
||||
this.resolveSession.setDescriptorResolver(descriptorResolver);
|
||||
@@ -281,7 +279,7 @@ public class InjectorForLazyResolveWithJava {
|
||||
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
|
||||
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
|
||||
expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver);
|
||||
expressionTypingComponents.setGlobalContext(globalContext);
|
||||
expressionTypingComponents.setGlobalContext(moduleContext);
|
||||
expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer);
|
||||
expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver);
|
||||
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
||||
@@ -334,8 +332,8 @@ public class InjectorForLazyResolveWithJava {
|
||||
public void destroy() {
|
||||
}
|
||||
|
||||
public ModuleDescriptorImpl getModule() {
|
||||
return this.module;
|
||||
public ModuleContext getModuleContext() {
|
||||
return this.moduleContext;
|
||||
}
|
||||
|
||||
public ResolveSession getResolveSession() {
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.di;
|
||||
|
||||
import org.jetbrains.kotlin.context.ModuleContext;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.kotlin.context.GlobalContext;
|
||||
import org.jetbrains.kotlin.storage.StorageManager;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory;
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession;
|
||||
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider;
|
||||
@@ -96,13 +96,13 @@ import javax.annotation.PreDestroy;
|
||||
@SuppressWarnings("all")
|
||||
public class InjectorForReplWithJava {
|
||||
|
||||
private final ModuleContext moduleContext;
|
||||
private final KotlinBuiltIns kotlinBuiltIns;
|
||||
private final ModuleDescriptorImpl moduleDescriptor;
|
||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||
private final Project project;
|
||||
private final GlobalContext globalContext;
|
||||
private final StorageManager storageManager;
|
||||
private final BindingTrace bindingTrace;
|
||||
private final ModuleDescriptorImpl module;
|
||||
private final KotlinBuiltIns kotlinBuiltIns;
|
||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||
private final DeclarationProviderFactory declarationProviderFactory;
|
||||
private final ResolveSession resolveSession;
|
||||
private final ScopeProvider scopeProvider;
|
||||
@@ -171,23 +171,21 @@ public class InjectorForReplWithJava {
|
||||
private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader;
|
||||
|
||||
public InjectorForReplWithJava(
|
||||
@NotNull Project project,
|
||||
@NotNull GlobalContext globalContext,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull BindingTrace bindingTrace,
|
||||
@NotNull ModuleDescriptorImpl module,
|
||||
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
||||
@NotNull GlobalSearchScope moduleContentScope,
|
||||
@NotNull AdditionalFileScopeProvider additionalFileScopeProvider
|
||||
) {
|
||||
this.project = project;
|
||||
this.globalContext = globalContext;
|
||||
this.storageManager = globalContext.getStorageManager();
|
||||
this.moduleContext = moduleContext;
|
||||
this.kotlinBuiltIns = moduleContext.getBuiltIns();
|
||||
this.moduleDescriptor = moduleContext.getModule();
|
||||
this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap();
|
||||
this.project = moduleContext.getProject();
|
||||
this.storageManager = moduleContext.getStorageManager();
|
||||
this.bindingTrace = bindingTrace;
|
||||
this.module = module;
|
||||
this.kotlinBuiltIns = module.getBuiltIns();
|
||||
this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap();
|
||||
this.declarationProviderFactory = declarationProviderFactory;
|
||||
this.resolveSession = new ResolveSession(project, globalContext, getModule(), declarationProviderFactory, bindingTrace);
|
||||
this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace);
|
||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||
this.moduleContentScope = moduleContentScope;
|
||||
this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
|
||||
@@ -205,12 +203,12 @@ public class InjectorForReplWithJava {
|
||||
this.javaSourceElementFactory = new JavaSourceElementFactoryImpl();
|
||||
this.singleModuleClassResolver = new SingleModuleClassResolver();
|
||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, singleModuleClassResolver);
|
||||
this.reflectionTypes = new ReflectionTypes(getModule());
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule(), reflectionTypes);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
||||
this.reflectionTypes = new ReflectionTypes(moduleDescriptor);
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor);
|
||||
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, getModule(), javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct();
|
||||
this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider();
|
||||
this.kotlinJvmCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$;
|
||||
@@ -228,7 +226,7 @@ public class InjectorForReplWithJava {
|
||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||
this.typeLazinessToken = new TypeLazinessToken();
|
||||
this.dynamicTypesSettings = new DynamicTypesSettings();
|
||||
this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, getModule(), javaFlexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings);
|
||||
this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings);
|
||||
this.forLoopConventionsChecker = new ForLoopConventionsChecker();
|
||||
this.fakeCallResolver = new FakeCallResolver(project, callResolver);
|
||||
this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns);
|
||||
@@ -240,7 +238,7 @@ public class InjectorForReplWithJava {
|
||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.lazyDeclarationResolver = new LazyDeclarationResolver(globalContext, bindingTrace);
|
||||
this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace);
|
||||
this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver);
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.bodyResolver = new BodyResolver();
|
||||
@@ -271,7 +269,7 @@ public class InjectorForReplWithJava {
|
||||
this.lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider);
|
||||
this.lazyTopDownAnalyzer.setFileScopeProvider(scopeProvider);
|
||||
this.lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver);
|
||||
this.lazyTopDownAnalyzer.setModuleDescriptor(module);
|
||||
this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor);
|
||||
this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver);
|
||||
this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver);
|
||||
this.lazyTopDownAnalyzer.setTopLevelDescriptorProvider(resolveSession);
|
||||
@@ -331,7 +329,7 @@ public class InjectorForReplWithJava {
|
||||
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
|
||||
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
|
||||
expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver);
|
||||
expressionTypingComponents.setGlobalContext(globalContext);
|
||||
expressionTypingComponents.setGlobalContext(moduleContext);
|
||||
expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer);
|
||||
expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver);
|
||||
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
||||
@@ -411,8 +409,8 @@ public class InjectorForReplWithJava {
|
||||
public void destroy() {
|
||||
}
|
||||
|
||||
public ModuleDescriptorImpl getModule() {
|
||||
return this.module;
|
||||
public ModuleContext getModuleContext() {
|
||||
return this.moduleContext;
|
||||
}
|
||||
|
||||
public ResolveSession getResolveSession() {
|
||||
|
||||
+27
-29
@@ -16,13 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.di;
|
||||
|
||||
import org.jetbrains.kotlin.context.ModuleContext;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.kotlin.context.GlobalContext;
|
||||
import org.jetbrains.kotlin.storage.StorageManager;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory;
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession;
|
||||
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider;
|
||||
@@ -96,13 +96,13 @@ import javax.annotation.PreDestroy;
|
||||
@SuppressWarnings("all")
|
||||
public class InjectorForTopDownAnalyzerForJvm {
|
||||
|
||||
private final ModuleContext moduleContext;
|
||||
private final KotlinBuiltIns kotlinBuiltIns;
|
||||
private final ModuleDescriptorImpl moduleDescriptor;
|
||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||
private final Project project;
|
||||
private final GlobalContext globalContext;
|
||||
private final StorageManager storageManager;
|
||||
private final BindingTrace bindingTrace;
|
||||
private final ModuleDescriptorImpl module;
|
||||
private final KotlinBuiltIns kotlinBuiltIns;
|
||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||
private final DeclarationProviderFactory declarationProviderFactory;
|
||||
private final ResolveSession resolveSession;
|
||||
private final ScopeProvider scopeProvider;
|
||||
@@ -171,22 +171,20 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader;
|
||||
|
||||
public InjectorForTopDownAnalyzerForJvm(
|
||||
@NotNull Project project,
|
||||
@NotNull GlobalContext globalContext,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull BindingTrace bindingTrace,
|
||||
@NotNull ModuleDescriptorImpl module,
|
||||
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
||||
@NotNull GlobalSearchScope moduleContentScope
|
||||
) {
|
||||
this.project = project;
|
||||
this.globalContext = globalContext;
|
||||
this.storageManager = globalContext.getStorageManager();
|
||||
this.moduleContext = moduleContext;
|
||||
this.kotlinBuiltIns = moduleContext.getBuiltIns();
|
||||
this.moduleDescriptor = moduleContext.getModule();
|
||||
this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap();
|
||||
this.project = moduleContext.getProject();
|
||||
this.storageManager = moduleContext.getStorageManager();
|
||||
this.bindingTrace = bindingTrace;
|
||||
this.module = module;
|
||||
this.kotlinBuiltIns = module.getBuiltIns();
|
||||
this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap();
|
||||
this.declarationProviderFactory = declarationProviderFactory;
|
||||
this.resolveSession = new ResolveSession(project, globalContext, getModule(), declarationProviderFactory, bindingTrace);
|
||||
this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace);
|
||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||
this.moduleContentScope = moduleContentScope;
|
||||
this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
|
||||
@@ -204,12 +202,12 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.javaSourceElementFactory = new JavaSourceElementFactoryImpl();
|
||||
this.singleModuleClassResolver = new SingleModuleClassResolver();
|
||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, singleModuleClassResolver);
|
||||
this.reflectionTypes = new ReflectionTypes(getModule());
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule(), reflectionTypes);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
||||
this.reflectionTypes = new ReflectionTypes(moduleDescriptor);
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes);
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor);
|
||||
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, getModule(), javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct();
|
||||
this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider();
|
||||
this.kotlinJvmCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$;
|
||||
@@ -226,7 +224,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||
this.typeLazinessToken = new TypeLazinessToken();
|
||||
this.dynamicTypesSettings = new DynamicTypesSettings();
|
||||
this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, getModule(), javaFlexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings);
|
||||
this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings);
|
||||
this.forLoopConventionsChecker = new ForLoopConventionsChecker();
|
||||
this.fakeCallResolver = new FakeCallResolver(project, callResolver);
|
||||
this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns);
|
||||
@@ -238,7 +236,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.lazyDeclarationResolver = new LazyDeclarationResolver(globalContext, bindingTrace);
|
||||
this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace);
|
||||
this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver);
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.additionalFileScopeProvider = new AdditionalFileScopeProvider();
|
||||
@@ -270,7 +268,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider);
|
||||
this.lazyTopDownAnalyzer.setFileScopeProvider(scopeProvider);
|
||||
this.lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver);
|
||||
this.lazyTopDownAnalyzer.setModuleDescriptor(module);
|
||||
this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor);
|
||||
this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver);
|
||||
this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver);
|
||||
this.lazyTopDownAnalyzer.setTopLevelDescriptorProvider(resolveSession);
|
||||
@@ -330,7 +328,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
|
||||
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
|
||||
expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver);
|
||||
expressionTypingComponents.setGlobalContext(globalContext);
|
||||
expressionTypingComponents.setGlobalContext(moduleContext);
|
||||
expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer);
|
||||
expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver);
|
||||
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
||||
@@ -410,8 +408,8 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
public void destroy() {
|
||||
}
|
||||
|
||||
public ModuleDescriptorImpl getModule() {
|
||||
return this.module;
|
||||
public ModuleContext getModuleContext() {
|
||||
return this.moduleContext;
|
||||
}
|
||||
|
||||
public ResolveSession getResolveSession() {
|
||||
|
||||
@@ -16,29 +16,22 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm
|
||||
|
||||
import org.jetbrains.kotlin.analyzer.AnalyzerFacade
|
||||
import org.jetbrains.kotlin.analyzer.ResolverForModule
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.jetbrains.kotlin.analyzer.PlatformAnalysisParameters
|
||||
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.context.GlobalContext
|
||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.analyzer.ModuleContent
|
||||
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
|
||||
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import java.util.ArrayList
|
||||
import org.jetbrains.kotlin.analyzer.*
|
||||
import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
|
||||
import org.jetbrains.kotlin.extensions.ExternalDeclarationsProvider
|
||||
import kotlin.platform.platformStatic
|
||||
import com.intellij.openapi.module.Module
|
||||
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
||||
import java.util.ArrayList
|
||||
import kotlin.platform.platformStatic
|
||||
|
||||
public class JvmResolverForModule(
|
||||
override val lazyResolveSession: ResolveSession,
|
||||
@@ -53,17 +46,16 @@ public class JvmPlatformParameters(
|
||||
public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatformParameters> {
|
||||
override fun <M : ModuleInfo> createResolverForModule(
|
||||
moduleInfo: M,
|
||||
project: Project,
|
||||
globalContext: GlobalContext,
|
||||
moduleDescriptor: ModuleDescriptorImpl,
|
||||
moduleContext: ModuleContext,
|
||||
moduleContent: ModuleContent,
|
||||
platformParameters: JvmPlatformParameters,
|
||||
resolverForProject: ResolverForProject<M, JvmResolverForModule>
|
||||
): JvmResolverForModule {
|
||||
val (syntheticFiles, moduleContentScope) = moduleContent
|
||||
val project = moduleContext.project
|
||||
val filesToAnalyze = getAllFilesToAnalyze(project, moduleInfo, syntheticFiles)
|
||||
val declarationProviderFactory = DeclarationProviderFactoryService.createDeclarationProviderFactory(
|
||||
project, globalContext.storageManager, filesToAnalyze,
|
||||
project, moduleContext.storageManager, filesToAnalyze,
|
||||
if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope
|
||||
)
|
||||
|
||||
@@ -72,16 +64,17 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
|
||||
resolverForProject.resolverForModule(moduleInfo as M).javaDescriptorResolver
|
||||
}
|
||||
val injector = InjectorForLazyResolveWithJava(
|
||||
project, globalContext,
|
||||
moduleContext,
|
||||
CodeAnalyzerInitializer.getInstance(project).createTrace(),
|
||||
moduleDescriptor, declarationProviderFactory,
|
||||
moduleContentScope, moduleClassResolver
|
||||
declarationProviderFactory,
|
||||
moduleContentScope,
|
||||
moduleClassResolver
|
||||
)
|
||||
|
||||
val resolveSession = injector.getResolveSession()!!
|
||||
val javaDescriptorResolver = injector.getJavaDescriptorResolver()!!
|
||||
val providersForModule = listOf(resolveSession.getPackageFragmentProvider(), javaDescriptorResolver.packageFragmentProvider)
|
||||
moduleDescriptor.initialize(CompositePackageFragmentProvider(providersForModule))
|
||||
moduleContext.module.initialize(CompositePackageFragmentProvider(providersForModule))
|
||||
return JvmResolverForModule(resolveSession, javaDescriptorResolver)
|
||||
}
|
||||
|
||||
|
||||
+16
-26
@@ -22,7 +22,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.context.GlobalContext;
|
||||
import org.jetbrains.kotlin.context.ModuleContext;
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
@@ -66,57 +66,47 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
return list;
|
||||
}
|
||||
|
||||
private TopDownAnalyzerFacadeForJVM() {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AnalysisResult analyzeFilesWithJavaIntegrationNoIncremental(
|
||||
@NotNull Project project,
|
||||
@NotNull GlobalContext globalContext,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull Collection<JetFile> files,
|
||||
@NotNull BindingTrace trace,
|
||||
@NotNull TopDownAnalysisMode topDownAnalysisMode,
|
||||
@NotNull ModuleDescriptorImpl module
|
||||
@NotNull TopDownAnalysisMode topDownAnalysisMode
|
||||
) {
|
||||
return analyzeFilesWithJavaIntegration(project, globalContext, files, trace, topDownAnalysisMode, module, null, null);
|
||||
return analyzeFilesWithJavaIntegration(moduleContext, files, trace, topDownAnalysisMode, null, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AnalysisResult analyzeFilesWithJavaIntegrationWithCustomContext(
|
||||
@NotNull Project project,
|
||||
@NotNull GlobalContext globalContext,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull Collection<JetFile> files,
|
||||
@NotNull BindingTrace trace,
|
||||
@NotNull ModuleDescriptorImpl module,
|
||||
@Nullable List<String> moduleIds,
|
||||
@Nullable IncrementalCacheProvider incrementalCacheProvider
|
||||
) {
|
||||
return analyzeFilesWithJavaIntegration(
|
||||
project, globalContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, module,
|
||||
moduleIds, incrementalCacheProvider);
|
||||
moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, moduleIds, incrementalCacheProvider
|
||||
);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static AnalysisResult analyzeFilesWithJavaIntegration(
|
||||
Project project,
|
||||
@NotNull GlobalContext globalContext,
|
||||
Collection<JetFile> files,
|
||||
BindingTrace trace,
|
||||
TopDownAnalysisMode topDownAnalysisMode,
|
||||
ModuleDescriptorImpl module,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull Collection<JetFile> files,
|
||||
@NotNull BindingTrace trace,
|
||||
@NotNull TopDownAnalysisMode topDownAnalysisMode,
|
||||
@Nullable List<String> moduleIds,
|
||||
@Nullable IncrementalCacheProvider incrementalCacheProvider
|
||||
) {
|
||||
Project project = moduleContext.getProject();
|
||||
List<JetFile> allFiles = JvmAnalyzerFacade.getAllFilesToAnalyze(project, null, files);
|
||||
|
||||
FileBasedDeclarationProviderFactory providerFactory =
|
||||
new FileBasedDeclarationProviderFactory(globalContext.getStorageManager(), allFiles);
|
||||
new FileBasedDeclarationProviderFactory(moduleContext.getStorageManager(), allFiles);
|
||||
|
||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
|
||||
project,
|
||||
globalContext,
|
||||
moduleContext,
|
||||
trace,
|
||||
module,
|
||||
providerFactory,
|
||||
GlobalSearchScope.allScope(project)
|
||||
);
|
||||
@@ -130,7 +120,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
|
||||
additionalProviders.add(
|
||||
new IncrementalPackageFragmentProvider(
|
||||
files, module, globalContext.getStorageManager(),
|
||||
files, moduleContext.getModule(), moduleContext.getStorageManager(),
|
||||
injector.getDeserializationComponentsForJava().getComponents(),
|
||||
incrementalCache, moduleId
|
||||
)
|
||||
@@ -140,7 +130,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
additionalProviders.add(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
|
||||
|
||||
injector.getLazyTopDownAnalyzerForTopLevel().analyzeFiles(topDownAnalysisMode, allFiles, additionalProviders);
|
||||
return AnalysisResult.success(trace.getBindingContext(), module);
|
||||
return AnalysisResult.success(trace.getBindingContext(), moduleContext.getModule());
|
||||
}
|
||||
finally {
|
||||
injector.destroy();
|
||||
|
||||
Reference in New Issue
Block a user