From 126f38d79c6e4711342260b5879331f5a1002446 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 19 Mar 2015 16:37:44 +0300 Subject: [PATCH] Initialize builtins with ResolveSession to avoid counting bodies in LazyTopDownAnalyzer --- .../references/BuiltInsReferenceResolver.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java index 280d6ffa12c..1e67cf1acf7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java @@ -41,7 +41,7 @@ import org.jetbrains.kotlin.context.ContextPackage; import org.jetbrains.kotlin.context.GlobalContextImpl; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; -import org.jetbrains.kotlin.di.InjectorForLazyTopDownAnalyzerBasic; +import org.jetbrains.kotlin.di.InjectorForLazyResolve; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; import org.jetbrains.kotlin.psi.JetFile; @@ -49,6 +49,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.resolve.*; import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.utils.UtilsPackage; import java.io.File; @@ -96,11 +97,6 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { public void run() { GlobalContextImpl globalContext = ContextPackage.GlobalContext(); - // TODO built-ins and lazy resolve - TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters.create( - globalContext.getStorageManager(), - globalContext.getExceptionTracker(), - true, false); ModuleDescriptorImpl module = new ModuleDescriptorImpl( Name.special(""), Collections.emptyList(), PlatformToKotlinClassMap.EMPTY ); @@ -108,13 +104,16 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { module.seal(); FileBasedDeclarationProviderFactory declarationFactory = - new FileBasedDeclarationProviderFactory(topDownAnalysisParameters.getStorageManager(), jetBuiltInsFiles); + new FileBasedDeclarationProviderFactory(globalContext.getStorageManager(), jetBuiltInsFiles); - LazyTopDownAnalyzerForTopLevel analyzer = new InjectorForLazyTopDownAnalyzerBasic( - myProject, topDownAnalysisParameters, new BindingTraceContext(), module, declarationFactory - ).getLazyTopDownAnalyzerForTopLevel(); + InjectorForLazyResolve injectorForLazyResolve = + new InjectorForLazyResolve(myProject, globalContext, module, declarationFactory, new BindingTraceContext(), + AdditionalCheckerProvider.DefaultProvider.INSTANCE$, + new DynamicTypesSettings()); - analyzer.analyzeFiles(topDownAnalysisParameters, jetBuiltInsFiles, Collections.emptyList()); + module.initialize(injectorForLazyResolve.getResolveSession().getPackageFragmentProvider()); + + injectorForLazyResolve.getResolveSession().forceResolveAll(); List fragments = module.getPackageFragmentProvider().getPackageFragments(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);