From 0905b361d04aa4a6d5ac62b4109ed3a4b46d1306 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 4 Oct 2016 10:43:53 +0300 Subject: [PATCH] Drop LazyTopDownAnalyzerForTopLevel Replace it everywhere with LazyTopDownAnalyzer --- .../cli/jvm/repl/CliReplAnalyzerEngine.kt | 4 +- .../kotlin/frontend/java/di/injection.kt | 1 - .../jvm/TopDownAnalyzerFacadeForJVM.kt | 4 +- .../jetbrains/kotlin/frontend/di/injection.kt | 2 +- .../kotlin/resolve/LazyTopDownAnalyzer.kt | 13 ++++--- .../LazyTopDownAnalyzerForTopLevel.java | 39 ------------------- .../checkers/AbstractDiagnosticsTest.java | 5 ++- .../idea/caches/resolve/KotlinResolveCache.kt | 13 ++----- .../kotlin/frontend/js/di/injection.kt | 8 ++-- 9 files changed, 23 insertions(+), 66 deletions(-) delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt index b2f1edac2d8..65cdfac04de 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt @@ -41,7 +41,7 @@ import org.jetbrains.kotlin.script.ScriptPriorities class CliReplAnalyzerEngine(environment: KotlinCoreEnvironment) { private val topDownAnalysisContext: TopDownAnalysisContext - private val topDownAnalyzer: LazyTopDownAnalyzerForTopLevel + private val topDownAnalyzer: LazyTopDownAnalyzer private val resolveSession: ResolveSession private val scriptDeclarationFactory: ScriptMutableDeclarationProviderFactory val module: ModuleDescriptorImpl @@ -67,7 +67,7 @@ class CliReplAnalyzerEngine(environment: KotlinCoreEnvironment) { this.topDownAnalysisContext = TopDownAnalysisContext( TopDownAnalysisMode.LocalDeclarations, DataFlowInfoFactory.EMPTY, resolveSession.declarationScopeProvider ) - this.topDownAnalyzer = container.get() + this.topDownAnalyzer = container.get() moduleContext.initializeModuleContents(CompositePackageFragmentProvider( listOf( 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 a5aa9379e93..d396f583263 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 @@ -56,7 +56,6 @@ fun StorageComponentContainer.configureJavaTopDownAnalysis( useImpl() useImpl() - useImpl() useImpl() useImpl() diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt index 90543bf9588..708a46b8d54 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt @@ -49,7 +49,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.JvmBuiltIns import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingTrace -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel +import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer import org.jetbrains.kotlin.resolve.TopDownAnalysisMode import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension @@ -152,7 +152,7 @@ object TopDownAnalyzerFacadeForJVM { additionalProviders )) - container.get().analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) + container.get().analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) for (extension in AnalysisCompletedHandlerExtension.getInstances(project)) { val result = extension.analysisCompleted(project, module, trace, files) 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 611c9d0dd76..fcea00c4691 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt @@ -96,7 +96,7 @@ fun createContainerForLazyBodyResolve( useInstance(kotlinCodeAnalyzer.fileScopeProvider) useInstance(bodyResolveCache) useInstance(languageVersionSettings) - useImpl() + useImpl() useImpl() } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt index 822e5d0e01f..5774f041af0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt @@ -50,8 +50,11 @@ class LazyTopDownAnalyzer( private val languageVersionSettings: LanguageVersionSettings, private val classifierUsageCheckers: Iterable ) { - fun analyzeDeclarations(topDownAnalysisMode: TopDownAnalysisMode, declarations: Collection, outerDataFlowInfo: DataFlowInfo): TopDownAnalysisContext { - + fun analyzeDeclarations( + topDownAnalysisMode: TopDownAnalysisMode, + declarations: Collection, + outerDataFlowInfo: DataFlowInfo = DataFlowInfo.EMPTY + ): TopDownAnalysisContext { val c = TopDownAnalysisContext(topDownAnalysisMode, outerDataFlowInfo, declarationScopeProvider) val topLevelFqNames = HashMultimap.create() @@ -108,7 +111,7 @@ class LazyTopDownAnalyzer( val descriptor = lazyDeclarationResolver.getClassDescriptor(classOrObject, location) as ClassDescriptorWithResolutionScopes c.declaredClasses.put(classOrObject, descriptor) - registerDeclarations(classOrObject.getDeclarations()) + registerDeclarations(classOrObject.declarations) registerTopLevelFqName(topLevelFqNames, classOrObject, descriptor) checkClassOrObjectDeclarations(classOrObject, descriptor) @@ -116,7 +119,7 @@ class LazyTopDownAnalyzer( private fun checkClassOrObjectDeclarations(classOrObject: KtClassOrObject, classDescriptor: ClassDescriptor) { var companionObjectAlreadyFound = false - for (jetDeclaration in classOrObject.getDeclarations()) { + for (jetDeclaration in classOrObject.declarations) { if (jetDeclaration is KtObjectDeclaration && jetDeclaration.isCompanion()) { if (companionObjectAlreadyFound) { trace.report(MANY_COMPANION_OBJECTS.on(jetDeclaration)) @@ -266,5 +269,3 @@ class LazyTopDownAnalyzer( } } } - - diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java deleted file mode 100644 index f46f0c4ab3b..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.intellij.psi.PsiElement; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory; - -import java.util.Collection; - -public class LazyTopDownAnalyzerForTopLevel { - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - - public LazyTopDownAnalyzerForTopLevel(@NotNull LazyTopDownAnalyzer lazyTopDownAnalyzer) { - this.lazyTopDownAnalyzer = lazyTopDownAnalyzer; - } - - @NotNull - public TopDownAnalysisContext analyzeDeclarations( - @NotNull TopDownAnalysisMode topDownAnalysisMode, - @NotNull Collection elements - ) { - return lazyTopDownAnalyzer.analyzeDeclarations(topDownAnalysisMode, elements, DataFlowInfoFactory.EMPTY); - } -} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.java b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.java index 15253d0bdb7..d6dcbb438e8 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.java @@ -58,6 +58,7 @@ import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.resolve.*; import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall; import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; +import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo; import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics; import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; @@ -326,8 +327,8 @@ public abstract class AbstractDiagnosticsTest extends BaseDiagnosticsTest { DslKt.getService(container, JavaDescriptorResolver.class).getPackageFragmentProvider() ))); - DslKt.getService(container, LazyTopDownAnalyzerForTopLevel.class).analyzeDeclarations( - TopDownAnalysisMode.TopLevelDeclarations, files + DslKt.getService(container, LazyTopDownAnalyzer.class).analyzeDeclarations( + TopDownAnalysisMode.TopLevelDeclarations, files, DataFlowInfo.Companion.getEMPTY() ); return AnalysisResult.success(moduleTrace.getBindingContext(), moduleDescriptor); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt index 6319df655c4..0ec727a77e1 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt @@ -174,16 +174,11 @@ private object KotlinResolveDataProvider { targetPlatform, componentProvider.get(), LanguageVersionSettingsImpl.DEFAULT // TODO: see KT-12410 - ).get() + ).get() - lazyTopDownAnalyzer.analyzeDeclarations( - TopDownAnalysisMode.TopLevelDeclarations, - listOf(analyzableElement) - ) - return AnalysisResult.success( - trace.bindingContext, - module - ) + lazyTopDownAnalyzer.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, listOf(analyzableElement)) + + return AnalysisResult.success(trace.bindingContext, module) } catch (e: ProcessCanceledException) { throw e 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 2e77a64b4e6..037ae8c2242 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 @@ -27,7 +27,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.CompilerEnvironment -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel +import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer import org.jetbrains.kotlin.resolve.createContainer import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer @@ -39,7 +39,7 @@ fun createTopDownAnalyzerForJs( bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory, languageVersionSettings: LanguageVersionSettings -): LazyTopDownAnalyzerForTopLevel { +): LazyTopDownAnalyzer { val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatform) { configureModule(moduleContext, JsPlatform, bindingTrace) @@ -51,9 +51,9 @@ fun createTopDownAnalyzerForJs( useInstance(LookupTracker.DO_NOTHING) useInstance(languageVersionSettings) useImpl() - useImpl() + useImpl() }.apply { get().initialize(get().packageFragmentProvider) } - return storageComponentContainer.get() + return storageComponentContainer.get() }