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
This commit is contained in:
@@ -207,6 +207,8 @@ class LazyTopDownAnalyzer(
|
|||||||
|
|
||||||
ClassifierUsageChecker.check(declarations, trace, classifierUsageCheckers)
|
ClassifierUsageChecker.check(declarations, trace, classifierUsageCheckers)
|
||||||
|
|
||||||
|
resolveImportsInAllFiles(c)
|
||||||
|
|
||||||
return 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<FqName, KtElement>, typeAliases: List<KtTypeAlias>) {
|
private fun createTypeAliasDescriptors(c: TopDownAnalysisContext, topLevelFqNames: Multimap<FqName, KtElement>, typeAliases: List<KtTypeAlias>) {
|
||||||
if (!languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases)) return
|
if (!languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases)) return
|
||||||
|
|
||||||
|
|||||||
+2
-32
@@ -18,24 +18,15 @@ package org.jetbrains.kotlin.resolve;
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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.calls.smartcasts.DataFlowInfoFactory;
|
||||||
import org.jetbrains.kotlin.resolve.lazy.ImportResolver;
|
|
||||||
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class LazyTopDownAnalyzerForTopLevel {
|
public class LazyTopDownAnalyzerForTopLevel {
|
||||||
private final KotlinCodeAnalyzer codeAnalyzer;
|
|
||||||
private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
|
private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
|
||||||
|
|
||||||
public LazyTopDownAnalyzerForTopLevel(
|
public LazyTopDownAnalyzerForTopLevel(@NotNull LazyTopDownAnalyzer lazyTopDownAnalyzer) {
|
||||||
@NotNull LazyTopDownAnalyzer lazyTopDownAnalyzer,
|
|
||||||
@NotNull KotlinCodeAnalyzer codeAnalyzer
|
|
||||||
) {
|
|
||||||
this.lazyTopDownAnalyzer = lazyTopDownAnalyzer;
|
this.lazyTopDownAnalyzer = lazyTopDownAnalyzer;
|
||||||
this.codeAnalyzer = codeAnalyzer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -43,27 +34,6 @@ public class LazyTopDownAnalyzerForTopLevel {
|
|||||||
@NotNull TopDownAnalysisMode topDownAnalysisMode,
|
@NotNull TopDownAnalysisMode topDownAnalysisMode,
|
||||||
@NotNull Collection<? extends PsiElement> elements
|
@NotNull Collection<? extends PsiElement> elements
|
||||||
) {
|
) {
|
||||||
TopDownAnalysisContext c = lazyTopDownAnalyzer.analyzeDeclarations(topDownAnalysisMode, elements, DataFlowInfoFactory.EMPTY);
|
return 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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user