diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt index 3e0d74d4058..525e5016957 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.load.java.JavaClassFinderImpl import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.BodyResolveCache +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver @@ -44,7 +45,8 @@ public fun createContainerForReplWithJava( useInstance(additionalFileScopeProvider) useInstance(declarationProviderFactory) - useInstance(BodyResolveCache.ThrowException) + + CompilerEnvironment.configure(this) useImpl() useImpl() diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt index b8101a61480..e69fe9aa9a0 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt @@ -32,10 +32,7 @@ import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinderFactory -import org.jetbrains.kotlin.resolve.BindingTrace -import org.jetbrains.kotlin.resolve.BodyResolveCache -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel +import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct @@ -80,7 +77,9 @@ public fun createContainerForLazyResolveWithJava( useInstance(moduleClassResolver) useInstance(declarationProviderFactory) - useInstance(BodyResolveCache.ThrowException) + + CompilerEnvironment.configure(this) + useImpl() useImpl() }.let { @@ -101,7 +100,8 @@ public fun createContainerForTopDownAnalyzerForJvm( configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker) useInstance(declarationProviderFactory) - useInstance(BodyResolveCache.ThrowException) + + CompilerEnvironment.configure(this) useImpl() useImpl() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt index 6b3020c646f..130444f5585 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt @@ -60,7 +60,9 @@ public fun createContainerForBodyResolve( configureModule(moduleContext, platform, bindingTrace) useInstance(statementFilter) - useInstance(BodyResolveCache.ThrowException) + + CompilerEnvironment.configure(this) + useImpl() } @@ -90,7 +92,9 @@ public fun createContainerForLazyLocalClassifierAnalyzer( useImpl() useInstance(NoTopLevelDescriptorProvider) - useInstance(BodyResolveCache.ThrowException) + + CompilerEnvironment.configure(this) + useInstance(FileScopeProvider.ThrowException) useImpl() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt new file mode 100644 index 00000000000..36fd1fa2bf6 --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.resolve + +import org.jetbrains.kotlin.container.StorageComponentContainer +import org.jetbrains.kotlin.container.useImpl +import org.jetbrains.kotlin.container.useInstance + +public object CompilerEnvironment : TargetEnvironment("Compiler") { + override fun configure(container: StorageComponentContainer) { + container.useInstance(BodyResolveCache.ThrowException) + } +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt new file mode 100644 index 00000000000..f13149aab51 --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.resolve + +import org.jetbrains.kotlin.container.StorageComponentContainer + +public abstract class TargetEnvironment(private val name: String) { + public abstract fun configure(container: StorageComponentContainer) + + override fun toString() = name +} \ No newline at end of file diff --git a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt index 34729f588c3..36e99367dc6 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.BodyResolveCache +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl import org.jetbrains.kotlin.resolve.lazy.ResolveSession @@ -42,7 +43,9 @@ public fun createTopDownAnalyzerForJs( useInstance(declarationProviderFactory) useImpl() - useInstance(BodyResolveCache.ThrowException) + + CompilerEnvironment.configure(this) + useInstance(LookupTracker.DO_NOTHING) useImpl() useImpl()