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); } } - -