From 9c70094cebe74b42be0b55c8a30c9287dfcc13cc Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 26 Sep 2016 14:54:33 +0300 Subject: [PATCH] Move resolveImportsInAllFiles to LazyTDA#analyzeDeclarations This does not change the behavior: in the other usage of analyzeDeclarations, a local class is being resolved and therefore TopDownAnalysisContext there does not contain any files where imports would be resolved --- .../kotlin/resolve/LazyTopDownAnalyzer.kt | 8 +++++ .../LazyTopDownAnalyzerForTopLevel.java | 34 ++----------------- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt index e264730c2bd..822e5d0e01f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt @@ -207,6 +207,8 @@ class LazyTopDownAnalyzer( ClassifierUsageChecker.check(declarations, trace, classifierUsageCheckers) + resolveImportsInAllFiles(c) + return c } @@ -216,6 +218,12 @@ class LazyTopDownAnalyzer( } } + private fun resolveImportsInAllFiles(c: TopDownAnalysisContext) { + for (file in c.files + c.scripts.keys.map { it.getContainingKtFile() }) { + fileScopeProvider.getImportResolver(file).forceResolveAllImports() + } + } + private fun createTypeAliasDescriptors(c: TopDownAnalysisContext, topLevelFqNames: Multimap, typeAliases: List) { if (!languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases)) return diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java index a38577b0541..f46f0c4ab3b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzerForTopLevel.java @@ -18,24 +18,15 @@ package org.jetbrains.kotlin.resolve; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.psi.KtFile; -import org.jetbrains.kotlin.psi.KtScript; import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory; -import org.jetbrains.kotlin.resolve.lazy.ImportResolver; -import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer; import java.util.Collection; public class LazyTopDownAnalyzerForTopLevel { - private final KotlinCodeAnalyzer codeAnalyzer; private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - public LazyTopDownAnalyzerForTopLevel( - @NotNull LazyTopDownAnalyzer lazyTopDownAnalyzer, - @NotNull KotlinCodeAnalyzer codeAnalyzer - ) { + public LazyTopDownAnalyzerForTopLevel(@NotNull LazyTopDownAnalyzer lazyTopDownAnalyzer) { this.lazyTopDownAnalyzer = lazyTopDownAnalyzer; - this.codeAnalyzer = codeAnalyzer; } @NotNull @@ -43,27 +34,6 @@ public class LazyTopDownAnalyzerForTopLevel { @NotNull TopDownAnalysisMode topDownAnalysisMode, @NotNull Collection elements ) { - TopDownAnalysisContext c = lazyTopDownAnalyzer.analyzeDeclarations(topDownAnalysisMode, elements, DataFlowInfoFactory.EMPTY); - - resolveImportsInAllFiles(c, codeAnalyzer); - - return c; - } - - private static void resolveImportsInAllFiles(TopDownAnalysisContext c, KotlinCodeAnalyzer resolveSession) { - for (KtFile file : c.getFiles()) { - resolveAndCheckImports(file, resolveSession); - } - - for (KtScript script : c.getScripts().keySet()) { - resolveAndCheckImports(script.getContainingKtFile(), resolveSession); - } - } - - private static void resolveAndCheckImports(@NotNull KtFile file, @NotNull KotlinCodeAnalyzer resolveSession) { - ImportResolver importResolver = resolveSession.getFileScopeProvider().getImportResolver(file); - importResolver.forceResolveAllImports(); + return lazyTopDownAnalyzer.analyzeDeclarations(topDownAnalysisMode, elements, DataFlowInfoFactory.EMPTY); } } - -