From e1a1c06c3e8a30b27b5f674b57f5f3c9d9807680 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Sat, 22 Nov 2014 15:35:18 +0300 Subject: [PATCH] Rename deserialization context for Java to "components" Simplify its injection to DeserializedDescriptorResolver --- .../jet/di/InjectorForJavaDescriptorResolver.java | 8 ++++---- .../jet/di/InjectorForLazyResolveWithJava.java | 8 ++++---- .../jet/di/InjectorForTopDownAnalyzerForJvm.java | 12 ++++++------ .../resolve/java/TopDownAnalyzerFacadeForJVM.java | 2 +- ...orJava.kt => DeserializationComponentsForJava.kt} | 2 +- .../kotlin/DeserializedDescriptorResolver.java | 11 ++++++----- .../jet/generators/injectors/GenerateInjectors.kt | 9 +++------ 7 files changed, 25 insertions(+), 27 deletions(-) rename core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/{DeserializationGlobalContextForJava.kt => DeserializationComponentsForJava.kt} (97%) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index ffe9543fa9c..226dbedc712 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -37,7 +37,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; -import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava; +import org.jetbrains.jet.lang.resolve.kotlin.DeserializationComponentsForJava; import org.jetbrains.jet.lang.resolve.kotlin.JavaClassDataFinder; import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader; import org.jetbrains.jet.lang.resolve.kotlin.DescriptorLoadersStorage; @@ -70,7 +70,7 @@ public class InjectorForJavaDescriptorResolver { private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final GlobalJavaResolverContext globalJavaResolverContext; private final DeserializedDescriptorResolver deserializedDescriptorResolver; - private final DeserializationGlobalContextForJava deserializationGlobalContextForJava; + private final DeserializationComponentsForJava deserializationComponentsForJava; private final JavaClassDataFinder javaClassDataFinder; private final AnnotationDescriptorLoader annotationDescriptorLoader; private final DescriptorLoadersStorage descriptorLoadersStorage; @@ -105,7 +105,7 @@ public class InjectorForJavaDescriptorResolver { this.descriptorLoadersStorage = new DescriptorLoadersStorage(lockBasedStorageManager, getModule()); this.annotationDescriptorLoader = new AnnotationDescriptorLoader(lockBasedStorageManager, getModule(), descriptorLoadersStorage, virtualFileFinder, traceBasedErrorReporter); this.constantDescriptorLoader = new ConstantDescriptorLoader(descriptorLoadersStorage, virtualFileFinder, traceBasedErrorReporter); - this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider); + this.deserializationComponentsForJava = new DeserializationComponentsForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider); this.javaClassFinder.setProject(project); this.javaClassFinder.setScope(globalSearchScope); @@ -123,7 +123,7 @@ public class InjectorForJavaDescriptorResolver { singleModuleClassResolver.setResolver(javaDescriptorResolver); - deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava); + deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); javaClassFinder.initialize(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java index 4e798ec1d83..e2268006129 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java @@ -65,7 +65,7 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; -import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava; +import org.jetbrains.jet.lang.resolve.kotlin.DeserializationComponentsForJava; import org.jetbrains.jet.lang.resolve.kotlin.JavaClassDataFinder; import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader; import org.jetbrains.jet.lang.resolve.kotlin.DescriptorLoadersStorage; @@ -126,7 +126,7 @@ public class InjectorForLazyResolveWithJava { private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final GlobalJavaResolverContext globalJavaResolverContext; private final DeserializedDescriptorResolver deserializedDescriptorResolver; - private final DeserializationGlobalContextForJava deserializationGlobalContextForJava; + private final DeserializationComponentsForJava deserializationComponentsForJava; private final JavaClassDataFinder javaClassDataFinder; private final AnnotationDescriptorLoader annotationDescriptorLoader; private final DescriptorLoadersStorage descriptorLoadersStorage; @@ -194,7 +194,7 @@ public class InjectorForLazyResolveWithJava { this.descriptorLoadersStorage = new DescriptorLoadersStorage(storageManager, module); this.annotationDescriptorLoader = new AnnotationDescriptorLoader(storageManager, module, descriptorLoadersStorage, virtualFileFinder, traceBasedErrorReporter); this.constantDescriptorLoader = new ConstantDescriptorLoader(descriptorLoadersStorage, virtualFileFinder, traceBasedErrorReporter); - this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(storageManager, module, javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider); + this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, module, javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider); this.resolveSession.setAnnotationResolve(annotationResolver); this.resolveSession.setDescriptorResolver(descriptorResolver); @@ -272,7 +272,7 @@ public class InjectorForLazyResolveWithJava { scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava); + deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); javaClassFinder.initialize(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 72893d362a6..217be559deb 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; -import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava; +import org.jetbrains.jet.lang.resolve.kotlin.DeserializationComponentsForJava; import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl; @@ -98,7 +98,7 @@ public class InjectorForTopDownAnalyzerForJvm { private final LazyTopDownAnalyzer lazyTopDownAnalyzer; private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final JavaDescriptorResolver javaDescriptorResolver; - private final DeserializationGlobalContextForJava deserializationGlobalContextForJava; + private final DeserializationComponentsForJava deserializationComponentsForJava; private final AdditionalCheckerProvider additionalCheckerProvider; private final GlobalSearchScope globalSearchScope; private final JavaClassFinderImpl javaClassFinder; @@ -188,7 +188,7 @@ public class InjectorForTopDownAnalyzerForJvm { this.descriptorLoadersStorage = new DescriptorLoadersStorage(storageManager, getModuleDescriptor()); this.annotationDescriptorLoader = new AnnotationDescriptorLoader(storageManager, getModuleDescriptor(), descriptorLoadersStorage, virtualFileFinder, traceBasedErrorReporter); this.constantDescriptorLoader = new ConstantDescriptorLoader(descriptorLoadersStorage, virtualFileFinder, traceBasedErrorReporter); - this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(storageManager, getModuleDescriptor(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider); + this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, getModuleDescriptor(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider); this.additionalCheckerProvider = org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider.INSTANCE$; this.globalSearchScope = com.intellij.psi.search.GlobalSearchScope.allScope(project); this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); @@ -356,7 +356,7 @@ public class InjectorForTopDownAnalyzerForJvm { scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider); scriptHeaderResolver.setTrace(bindingTrace); - deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava); + deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); javaClassFinder.initialize(); @@ -382,8 +382,8 @@ public class InjectorForTopDownAnalyzerForJvm { return this.javaDescriptorResolver; } - public DeserializationGlobalContextForJava getDeserializationGlobalContextForJava() { - return this.deserializationGlobalContextForJava; + public DeserializationComponentsForJava getDeserializationComponentsForJava() { + return this.deserializationComponentsForJava; } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/TopDownAnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/TopDownAnalyzerFacadeForJVM.java index 17994199038..ab073744f3c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/TopDownAnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/TopDownAnalyzerFacadeForJVM.java @@ -127,7 +127,7 @@ public enum TopDownAnalyzerFacadeForJVM { additionalProviders.add( new IncrementalPackageFragmentProvider( files, module, topDownAnalysisParameters.getStorageManager(), - injector.getDeserializationGlobalContextForJava().getComponents(), + injector.getDeserializationComponentsForJava().getComponents(), incrementalCache, moduleId, injector.getJavaDescriptorResolver() ) ); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializationGlobalContextForJava.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializationComponentsForJava.kt similarity index 97% rename from core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializationGlobalContextForJava.kt rename to core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializationComponentsForJava.kt index 912524c4795..bf5af064c59 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializationGlobalContextForJava.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializationComponentsForJava.kt @@ -23,7 +23,7 @@ import org.jetbrains.jet.descriptors.serialization.context.DeserializationCompon // This class is needed only for easier injection: exact types of needed components are specified in the constructor here. // Otherwise injector generator is not smart enough to deduce, for example, which package fragment provider DeserializationComponents needs -public class DeserializationGlobalContextForJava( +public class DeserializationComponentsForJava( storageManager: StorageManager, moduleDescriptor: ModuleDescriptor, classDataFinder: JavaClassDataFinder, diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java index 11f598c4813..bd5c3027eb5 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java @@ -20,6 +20,7 @@ import kotlin.Function0; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil; +import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents; import org.jetbrains.jet.descriptors.serialization.descriptors.DescriptorsPackage; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; @@ -37,22 +38,22 @@ import static org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader.Kin public final class DeserializedDescriptorResolver { private final ErrorReporter errorReporter; - private DeserializationGlobalContextForJava context; + private DeserializationComponents components; public DeserializedDescriptorResolver(@NotNull ErrorReporter errorReporter) { this.errorReporter = errorReporter; } @Inject - public void setContext(@NotNull DeserializationGlobalContextForJava context) { - this.context = context; + public void setComponents(@NotNull DeserializationComponentsForJava context) { + this.components = context.getComponents(); } @Nullable public ClassDescriptor resolveClass(@NotNull KotlinJvmBinaryClass kotlinClass) { String[] data = readData(kotlinClass, CLASS); if (data != null) { - return context.getComponents().getClassDeserializer().deserializeClass( + return components.getClassDeserializer().deserializeClass( kotlinClass.getClassId(), JavaProtoBufUtil.readClassDataFrom(data) ); } @@ -65,7 +66,7 @@ public final class DeserializedDescriptorResolver { if (data != null) { //all classes are included in java scope return DescriptorsPackage.DeserializedPackageMemberScope( - descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context.getComponents(), + descriptor, JavaProtoBufUtil.readPackageDataFrom(data), components, new Function0>() { @Override public Collection invoke() { diff --git a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt index ba23b446565..815448c424b 100644 --- a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt +++ b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt @@ -22,8 +22,7 @@ import org.jetbrains.jet.context.GlobalContextImpl import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.jet.lang.resolve.* -import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl -import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver +import org.jetbrains.jet.lang.resolve.java.* import org.jetbrains.jet.lang.resolve.java.resolver.* import org.jetbrains.jet.lang.resolve.java.sam.SamConversionResolverImpl import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder @@ -37,13 +36,11 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolver import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaPropertyInitializerEvaluatorImpl import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.jet.lang.resolve.java.lazy.ModuleClassResolver -import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava +import org.jetbrains.jet.lang.resolve.kotlin.DeserializationComponentsForJava import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinderFactory -import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer -import org.jetbrains.jet.lang.resolve.java.JavaFlexibleTypeCapabilitiesProvider import org.jetbrains.jet.context.LazyResolveToken // NOTE: After making changes, you need to re-generate the injectors. @@ -122,7 +119,7 @@ private fun generatorForTopDownAnalyzerForJvm() = commonForTopDownAnalyzer() publicField(javaClass()) - publicField(javaClass()) + publicField(javaClass()) field(javaClass(), init = GivenExpression(javaClass().getName() + ".INSTANCE$"))