From 7b15f4125d9b2f2275f73111510796aef3f1d4ab Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 13 Aug 2014 15:07:15 +0400 Subject: [PATCH] LTDA: Fix configuration of package fragment provider in lazy resolve test code --- .../jet/lang/resolve/TopDownAnalyzer.java | 61 +++++++++++-------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index eeb94696987..2a31080d846 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -133,25 +133,6 @@ public class TopDownAnalyzer { // c.enableDebugOutput(); c.debug("Enter"); - if (c.getTopDownAnalysisParameters().isLazy()) { - ResolveSession resolveSession = new InjectorForLazyResolve( - project, - new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO - (ModuleDescriptorImpl) moduleDescriptor, // TODO - new FileBasedDeclarationProviderFactory(c.getStorageManager(), getFiles(declarations)), - trace, - additionalCheckerProvider - ).getResolveSession(); - - lazyTopDownAnalyzer.setKotlinCodeAnalyzer(resolveSession); - - lazyTopDownAnalyzer.analyzeDeclarations( - c.getTopDownAnalysisParameters(), - declarations - ); - return; - } - typeHierarchyResolver.process(c, outerScope, owner, declarations); declarationResolver.process(c); overrideResolver.process(c); @@ -275,14 +256,42 @@ public class TopDownAnalyzer { @NotNull Collection files, @NotNull List additionalProviders ) { - CompositePackageFragmentProvider provider = - new CompositePackageFragmentProvider(KotlinPackage.plus(Arrays.asList(packageFragmentProvider), additionalProviders)); - ((ModuleDescriptorImpl) moduleDescriptor).initialize(provider); - - // dummy builder is used because "root" is module descriptor, - // packages added to module explicitly in TopDownAnalysisContext c = new TopDownAnalysisContext(topDownAnalysisParameters); - doProcess(c, JetModuleUtil.getSubpackagesOfRootScope(moduleDescriptor), new PackageLikeBuilderDummy(), files); + + if (c.getTopDownAnalysisParameters().isLazy()) { + ResolveSession resolveSession = new InjectorForLazyResolve( + project, + new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO + (ModuleDescriptorImpl) moduleDescriptor, // TODO + new FileBasedDeclarationProviderFactory(c.getStorageManager(), files), + trace, + additionalCheckerProvider + ).getResolveSession(); + + CompositePackageFragmentProvider provider = + new CompositePackageFragmentProvider(KotlinPackage.plus(Arrays.asList(resolveSession.getPackageFragmentProvider()), additionalProviders)); + + ((ModuleDescriptorImpl) moduleDescriptor).initialize(provider); + + lazyTopDownAnalyzer.setKotlinCodeAnalyzer(resolveSession); + + lazyTopDownAnalyzer.analyzeDeclarations( + c.getTopDownAnalysisParameters(), + files + ); + return c; + } + else { + CompositePackageFragmentProvider provider = + new CompositePackageFragmentProvider(KotlinPackage.plus(Arrays.asList(packageFragmentProvider), additionalProviders)); + + ((ModuleDescriptorImpl) moduleDescriptor).initialize(provider); + + // dummy builder is used because "root" is module descriptor, + // packages added to module explicitly in + doProcess(c, JetModuleUtil.getSubpackagesOfRootScope(moduleDescriptor), new PackageLikeBuilderDummy(), files); + } + return c; }