From 0abc63261d4a13a58479205ddf2ba1bebb68155c Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 8 Apr 2015 18:42:26 +0300 Subject: [PATCH] Inject reflectionTypes into LazyJavaResolverContext --- .../kotlin/di/InjectorForLazyResolveWithJava.java | 4 ++-- .../org/jetbrains/kotlin/di/InjectorForReplWithJava.java | 4 ++-- .../kotlin/di/InjectorForTopDownAnalyzerForJvm.java | 4 ++-- .../load/java/lazy/LazyJavaPackageFragmentProvider.kt | 7 +++++-- .../src/org/jetbrains/kotlin/load/java/lazy/context.kt | 4 +++- .../kotlin/di/InjectorForRuntimeDescriptorLoader.java | 5 ++++- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java index 46ba7441d57..a59a9f9c10e 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java @@ -175,7 +175,8 @@ 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.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); + this.reflectionTypes = new ReflectionTypes(getModule()); + this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule(), reflectionTypes); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); this.lazyResolveToken = new LazyResolveToken(); @@ -196,7 +197,6 @@ public class InjectorForLazyResolveWithJava { this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.reflectionTypes = new ReflectionTypes(getModule()); this.callExpressionResolver = new CallExpressionResolver(); this.statementFilter = new StatementFilter(); this.candidateResolver = new CandidateResolver(); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java index 1dd6044e228..2b2d379eddf 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java @@ -199,7 +199,8 @@ 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.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); + this.reflectionTypes = new ReflectionTypes(getModule()); + this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule(), reflectionTypes); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver); this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), storageManager, virtualFileFinder, traceBasedErrorReporter); @@ -224,7 +225,6 @@ public class InjectorForReplWithJava { this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.reflectionTypes = new ReflectionTypes(getModule()); this.callExpressionResolver = new CallExpressionResolver(); this.statementFilter = new StatementFilter(); this.candidateResolver = new CandidateResolver(); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java index ff68f8b9e74..447a4c17493 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java @@ -198,7 +198,8 @@ 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.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); + this.reflectionTypes = new ReflectionTypes(getModule()); + this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule(), reflectionTypes); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver); this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), storageManager, virtualFileFinder, traceBasedErrorReporter); @@ -222,7 +223,6 @@ public class InjectorForTopDownAnalyzerForJvm { this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.reflectionTypes = new ReflectionTypes(getModule()); this.callExpressionResolver = new CallExpressionResolver(); this.statementFilter = new StatementFilter(); this.candidateResolver = new CandidateResolver(); diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt index 26d795e52ee..633f88e15e6 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.load.java.lazy +import org.jetbrains.kotlin.builtins.ReflectionTypes import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.storage.MemoizedFunctionToNullable import org.jetbrains.kotlin.name.FqName @@ -28,10 +29,12 @@ import org.jetbrains.kotlin.utils.emptyOrSingletonList public class LazyJavaPackageFragmentProvider( outerContext: GlobalJavaResolverContext, - module: ModuleDescriptor + module: ModuleDescriptor, + reflectionTypes: ReflectionTypes ) : PackageFragmentProvider { - private val c = LazyJavaResolverContext(outerContext, this, FragmentClassResolver(), module, TypeParameterResolver.EMPTY) + private val c = + LazyJavaResolverContext(outerContext, this, FragmentClassResolver(), module, reflectionTypes, TypeParameterResolver.EMPTY) private val packageFragments: MemoizedFunctionToNullable = c.storageManager.createMemoizedFunctionWithNullableValues { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/context.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/context.kt index fac774815a0..d0ff5a9677c 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/context.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/context.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.load.java.lazy +import org.jetbrains.kotlin.builtins.ReflectionTypes import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.load.java.lazy.types.LazyJavaTypeResolver import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -50,6 +51,7 @@ open class LazyJavaResolverContext( val packageFragmentProvider: LazyJavaPackageFragmentProvider, val javaClassResolver: LazyJavaClassResolver, val module: ModuleDescriptor, + val reflectionTypes: ReflectionTypes, val typeParameterResolver: TypeParameterResolver ) : GlobalJavaResolverContext( globalContext.storageManager, @@ -71,7 +73,7 @@ open class LazyJavaResolverContext( fun LazyJavaResolverContext.child( typeParameterResolver: TypeParameterResolver -) = LazyJavaResolverContext(this, packageFragmentProvider, javaClassResolver, module, typeParameterResolver) +) = LazyJavaResolverContext(this, packageFragmentProvider, javaClassResolver, module, reflectionTypes, typeParameterResolver) fun LazyJavaResolverContext.child( diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java b/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java index 96582400f00..f15e28bcb6d 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClassFinder; import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.kotlin.load.java.lazy.GlobalJavaResolverContext; import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver; +import org.jetbrains.kotlin.builtins.ReflectionTypes; import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder; import org.jetbrains.kotlin.load.kotlin.BinaryClassAnnotationAndConstantLoaderImpl; import org.jetbrains.annotations.NotNull; @@ -62,6 +63,7 @@ public class InjectorForRuntimeDescriptorLoader { private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final GlobalJavaResolverContext globalJavaResolverContext; private final DeserializedDescriptorResolver deserializedDescriptorResolver; + private final ReflectionTypes reflectionTypes; private final JavaClassDataFinder javaClassDataFinder; private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader; @@ -85,7 +87,8 @@ public class InjectorForRuntimeDescriptorLoader { this.runtimeSourceElementFactory = RuntimeSourceElementFactory.INSTANCE$; this.singleModuleClassResolver = new SingleModuleClassResolver(); this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, reflectJavaClassFinder, reflectKotlinClassFinder, deserializedDescriptorResolver, externalAnnotationResolver, externalSignatureResolver, runtimeErrorReporter, methodSignatureChecker, javaResolverCache, javaPropertyInitializerEvaluator, samConversionResolver, runtimeSourceElementFactory, singleModuleClassResolver); - this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor()); + this.reflectionTypes = new ReflectionTypes(getModuleDescriptor()); + this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor(), reflectionTypes); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor()); this.javaClassDataFinder = new JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver); this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModuleDescriptor(), lockBasedStorageManager, reflectKotlinClassFinder, runtimeErrorReporter);