From 80a32ee8754c45fced9d8e5ef7df7f95ce7af62d Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 2 Dec 2014 18:26:01 +0300 Subject: [PATCH] ModuleDescriptor knows its built-ins --- .../jetbrains/jet/di/InjectorForLazyResolveWithJava.java | 6 +++--- .../src/org/jetbrains/jet/di/InjectorForReplWithJava.java | 6 +++--- .../jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java | 6 +++--- .../src/org/jetbrains/jet/di/InjectorForBodyResolve.java | 6 +++--- .../org/jetbrains/jet/di/InjectorForLazyBodyResolve.java | 6 +++--- .../src/org/jetbrains/jet/di/InjectorForLazyResolve.java | 6 +++--- .../jet/di/InjectorForLazyTopDownAnalyzerBasic.java | 6 +++--- .../src/org/jetbrains/jet/di/InjectorForMacros.java | 6 +++--- .../jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java | 6 +++--- .../lang/resolve/lazy/descriptors/LazyClassDescriptor.java | 2 +- .../lazy/descriptors/LazyTypeParameterDescriptor.java | 3 +-- compiler/tests/org/jetbrains/jet/di/InjectorForTests.java | 6 +++--- .../org/jetbrains/jet/lang/descriptors/ModuleDescriptor.kt | 3 +++ .../jet/lang/descriptors/impl/ModuleDescriptorImpl.kt | 4 ++++ .../jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java | 6 +++--- 15 files changed, 42 insertions(+), 36 deletions(-) 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 f6a2566b55b..73e0f117e3f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -44,7 +45,6 @@ import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -84,6 +84,7 @@ public class InjectorForLazyResolveWithJava { 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; @@ -107,7 +108,6 @@ public class InjectorForLazyResolveWithJava { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -150,6 +150,7 @@ public class InjectorForLazyResolveWithJava { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.module = module; + this.kotlinBuiltIns = module.getBuiltIns(); this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); @@ -176,7 +177,6 @@ public class InjectorForLazyResolveWithJava { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForReplWithJava.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForReplWithJava.java index 809be2c2a5d..955fef2f792 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForReplWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForReplWithJava.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -47,7 +48,6 @@ import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider.AdditionalFileScopeProv import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -99,6 +99,7 @@ public class InjectorForReplWithJava { 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; @@ -125,7 +126,6 @@ public class InjectorForReplWithJava { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -180,6 +180,7 @@ public class InjectorForReplWithJava { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.module = module; + this.kotlinBuiltIns = module.getBuiltIns(); this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); @@ -211,7 +212,6 @@ public class InjectorForReplWithJava { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); 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 a0d3c8ccbce..c6a88eb0147 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -46,7 +47,6 @@ import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -99,6 +99,7 @@ public class InjectorForTopDownAnalyzerForJvm { 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; @@ -124,7 +125,6 @@ public class InjectorForTopDownAnalyzerForJvm { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -179,6 +179,7 @@ public class InjectorForTopDownAnalyzerForJvm { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.module = module; + this.kotlinBuiltIns = module.getBuiltIns(); this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); @@ -209,7 +210,6 @@ public class InjectorForTopDownAnalyzerForJvm { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java index b7f3325db70..814a4be7b47 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider; import org.jetbrains.jet.lang.resolve.PartialBodyResolveProvider; @@ -28,7 +29,6 @@ import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -64,6 +64,7 @@ public class InjectorForBodyResolve { private final StorageManager storageManager; private final BindingTrace bindingTrace; private final ModuleDescriptor moduleDescriptor; + private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final AdditionalCheckerProvider additionalCheckerProvider; private final PartialBodyResolveProvider partialBodyResolveProvider; @@ -71,7 +72,6 @@ public class InjectorForBodyResolve { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -109,6 +109,7 @@ public class InjectorForBodyResolve { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.moduleDescriptor = moduleDescriptor; + this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.additionalCheckerProvider = additionalCheckerProvider; this.partialBodyResolveProvider = partialBodyResolveProvider; @@ -116,7 +117,6 @@ public class InjectorForBodyResolve { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyBodyResolve.java index 975477f03de..c9f7f169430 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyBodyResolve.java @@ -23,13 +23,13 @@ import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer; import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -78,13 +78,13 @@ public class InjectorForLazyBodyResolve { private final BindingTrace bindingTrace; private final AdditionalCheckerProvider additionalCheckerProvider; private final ModuleDescriptor moduleDescriptor; + private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final LazyTopDownAnalyzer lazyTopDownAnalyzer; private final BodyResolver bodyResolver; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -134,13 +134,13 @@ public class InjectorForLazyBodyResolve { this.bindingTrace = bindingTrace; this.additionalCheckerProvider = additionalCheckerProvider; this.moduleDescriptor = analyzer.getModuleDescriptor(); + this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); this.bodyResolver = new BodyResolver(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index 18a148bf988..e59555aefaf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project; import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.BindingTrace; @@ -29,7 +30,6 @@ import org.jetbrains.jet.context.LazyResolveToken; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -63,6 +63,7 @@ public class InjectorForLazyResolve { private final GlobalContext globalContext; private final StorageManager storageManager; private final ModuleDescriptorImpl moduleDescriptor; + private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final DeclarationProviderFactory declarationProviderFactory; private final BindingTrace bindingTrace; @@ -72,7 +73,6 @@ public class InjectorForLazyResolve { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -108,6 +108,7 @@ public class InjectorForLazyResolve { this.globalContext = globalContext; this.storageManager = globalContext.getStorageManager(); this.moduleDescriptor = moduleDescriptor; + this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; this.bindingTrace = bindingTrace; @@ -117,7 +118,6 @@ public class InjectorForLazyResolve { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyTopDownAnalyzerBasic.java index c134c43f3b4..d81b1431fb0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyTopDownAnalyzerBasic.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -29,7 +30,6 @@ import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider.Empty; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -79,6 +79,7 @@ public class InjectorForLazyTopDownAnalyzerBasic { 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; @@ -87,7 +88,6 @@ public class InjectorForLazyTopDownAnalyzerBasic { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -138,6 +138,7 @@ public class InjectorForLazyTopDownAnalyzerBasic { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.module = module; + this.kotlinBuiltIns = module.getBuiltIns(); this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); @@ -146,7 +147,6 @@ public class InjectorForLazyTopDownAnalyzerBasic { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java index 61d6ee1134f..b91b8a26b8d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.di; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; @@ -31,7 +32,6 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; import org.jetbrains.jet.context.LazinessToken; import org.jetbrains.jet.lang.types.DynamicTypesSettings; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; @@ -54,6 +54,7 @@ public class InjectorForMacros { private final Project project; private final ModuleDescriptor moduleDescriptor; + private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; @@ -67,7 +68,6 @@ public class InjectorForMacros { private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; private final LazinessToken lazinessToken; private final DynamicTypesSettings dynamicTypesSettings; - private final KotlinBuiltIns kotlinBuiltIns; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; private final DelegatedPropertyResolver delegatedPropertyResolver; @@ -88,6 +88,7 @@ public class InjectorForMacros { ) { this.project = project; this.moduleDescriptor = moduleDescriptor; + this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(getExpressionTypingComponents()); @@ -101,7 +102,6 @@ public class InjectorForMacros { this.lazinessToken = new LazinessToken(); this.dynamicTypesSettings = new DynamicTypesSettings(); this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, lazinessToken, dynamicTypesSettings); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index 3fc86eef511..b9d4e2a4a8a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; @@ -30,7 +31,6 @@ import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -74,6 +74,7 @@ public class InjectorForTopDownAnalyzerBasic { private final StorageManager storageManager; private final BindingTrace bindingTrace; private final ModuleDescriptor moduleDescriptor; + private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final TopDownAnalyzer topDownAnalyzer; private final MutablePackageFragmentProvider mutablePackageFragmentProvider; @@ -83,7 +84,6 @@ public class InjectorForTopDownAnalyzerBasic { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -129,6 +129,7 @@ public class InjectorForTopDownAnalyzerBasic { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.moduleDescriptor = moduleDescriptor; + this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.topDownAnalyzer = new TopDownAnalyzer(); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); @@ -138,7 +139,6 @@ public class InjectorForTopDownAnalyzerBasic { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 88107f2c796..58d2451debf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -514,7 +514,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes JetClassOrObject classOrObject = info.getCorrespondingClassOrObject(); if (classOrObject == null) { - return new Supertypes(Collections.singleton(KotlinBuiltIns.getInstance().getAnyType())); + return new Supertypes(Collections.singleton(resolveSession.getModuleDescriptor().getBuiltIns().getAnyType())); } List allSupertypes = resolveSession.getDescriptorResolver() diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java index 5e5520973b6..3ed00a4f321 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java @@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil; import org.jetbrains.jet.lang.resolve.lazy.LazyEntity; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.types.JetType; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lexer.JetTokens; import java.util.Set; @@ -73,7 +72,7 @@ public class LazyTypeParameterDescriptor extends AbstractLazyTypeParameterDescri resolveUpperBoundsFromWhereClause(upperBounds); if (upperBounds.isEmpty()) { - upperBounds.add(KotlinBuiltIns.getInstance().getDefaultBound()); + upperBounds.add(resolveSession.getModuleDescriptor().getBuiltIns().getDefaultBound()); } return upperBounds; diff --git a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java index 1a4f118661d..de26e45b10c 100644 --- a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java +++ b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.di; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; @@ -29,7 +30,6 @@ import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; @@ -54,6 +54,7 @@ public class InjectorForTests { private final Project project; private final ModuleDescriptor moduleDescriptor; + private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final DescriptorResolver descriptorResolver; private final ExpressionTypingServices expressionTypingServices; @@ -65,7 +66,6 @@ public class InjectorForTests { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; private final TaskPrioritizer taskPrioritizer; @@ -88,12 +88,12 @@ public class InjectorForTests { ) { this.project = project; this.moduleDescriptor = moduleDescriptor; + this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.descriptorResolver = new DescriptorResolver(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.callResolver = new CallResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingUtils = new ExpressionTypingUtils(getExpressionTypingServices(), callResolver, kotlinBuiltIns); this.annotationResolver = new AnnotationResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ModuleDescriptor.kt b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ModuleDescriptor.kt index d393f2485e2..2bfd4b827f2 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ModuleDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ModuleDescriptor.kt @@ -21,6 +21,7 @@ import org.jetbrains.jet.lang.resolve.ImportPath import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.lang.types.TypeSubstitutor import org.jetbrains.jet.lang.descriptors.impl.PackageViewDescriptorImpl +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns public trait ModuleDescriptor : DeclarationDescriptor { override fun getContainingDeclaration(): DeclarationDescriptor? = null @@ -36,6 +37,8 @@ public trait ModuleDescriptor : DeclarationDescriptor { public val platformToKotlinClassMap: PlatformToKotlinClassMap + public val builtIns: KotlinBuiltIns + public fun isFriend(other: ModuleDescriptor): Boolean override fun substitute(substitutor: TypeSubstitutor): ModuleDescriptor { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ModuleDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ModuleDescriptorImpl.kt index 778811ca2da..252d2dd3bc5 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ModuleDescriptorImpl.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ModuleDescriptorImpl.kt @@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.Annotations import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import kotlin.properties.Delegates import java.util.LinkedHashSet +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns public class ModuleDescriptorImpl( moduleName: Name, @@ -95,4 +96,7 @@ public class ModuleDescriptorImpl( assert(!isSealed, "Attempt to add friend module ${friend.id} to sealed module $id") friendModules.add(friend) } + + override val builtIns: KotlinBuiltIns + get() = KotlinBuiltIns.getInstance() } diff --git a/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index ea3aeb5e8b6..469e7bf0398 100644 --- a/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -31,7 +32,6 @@ import org.jetbrains.jet.lang.types.DynamicTypesAllowed; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -79,6 +79,7 @@ public class InjectorForTopDownAnalyzerForJs { 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; @@ -89,7 +90,6 @@ public class InjectorForTopDownAnalyzerForJs { private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; - private final KotlinBuiltIns kotlinBuiltIns; private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -138,6 +138,7 @@ public class InjectorForTopDownAnalyzerForJs { this.storageManager = globalContext.getStorageManager(); this.bindingTrace = bindingTrace; this.module = module; + this.kotlinBuiltIns = module.getBuiltIns(); this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); @@ -148,7 +149,6 @@ public class InjectorForTopDownAnalyzerForJs { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); this.expressionTypingComponents = new ExpressionTypingComponents(); this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices);