LazyDeclarationResolver extracted from ResolveSession

This commit is contained in:
Andrey Breslav
2015-01-22 19:56:09 +03:00
parent b5503f3acf
commit 6285efe32d
12 changed files with 410 additions and 252 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory;
import org.jetbrains.kotlin.resolve.lazy.ResolveSession;
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider;
import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer;
import org.jetbrains.kotlin.js.resolve.KotlinJsCheckerProvider;
import org.jetbrains.kotlin.types.DynamicTypesAllowed;
@@ -50,10 +51,10 @@ import org.jetbrains.kotlin.resolve.calls.CallCompleter;
import org.jetbrains.kotlin.resolve.calls.CandidateResolver;
import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer;
import org.jetbrains.kotlin.psi.JetImportsFactory;
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider;
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider;
import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver;
import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl;
import org.jetbrains.kotlin.resolve.ScriptBodyResolver;
import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider;
import org.jetbrains.kotlin.resolve.BodyResolver;
import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer;
import org.jetbrains.kotlin.resolve.DeclarationsChecker;
@@ -80,6 +81,7 @@ public class InjectorForTopDownAnalyzerForJs {
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationProviderFactory declarationProviderFactory;
private final ResolveSession resolveSession;
private final ScopeProvider scopeProvider;
private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
private final KotlinJsCheckerProvider kotlinJsCheckerProvider;
private final DynamicTypesAllowed dynamicTypesAllowed;
@@ -105,10 +107,10 @@ public class InjectorForTopDownAnalyzerForJs {
private final CandidateResolver candidateResolver;
private final TaskPrioritizer taskPrioritizer;
private final JetImportsFactory jetImportsFactory;
private final ScopeProvider scopeProvider;
private final AdditionalFileScopeProvider additionalFileScopeProvider;
private final LazyDeclarationResolver lazyDeclarationResolver;
private final DeclarationScopeProviderImpl declarationScopeProvider;
private final ScriptBodyResolver scriptBodyResolver;
private final AdditionalFileScopeProvider additionalFileScopeProvider;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
@@ -136,6 +138,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap();
this.declarationProviderFactory = declarationProviderFactory;
this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace);
this.scopeProvider = new ScopeProvider(getResolveSession());
this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
this.kotlinJsCheckerProvider = KotlinJsCheckerProvider.INSTANCE$;
this.dynamicTypesAllowed = new DynamicTypesAllowed();
@@ -161,10 +164,10 @@ public class InjectorForTopDownAnalyzerForJs {
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
this.taskPrioritizer = new TaskPrioritizer(storageManager);
this.jetImportsFactory = new JetImportsFactory();
this.scopeProvider = new ScopeProvider(getResolveSession());
this.additionalFileScopeProvider = new AdditionalFileScopeProvider();
this.declarationScopeProvider = new DeclarationScopeProviderImpl(getResolveSession());
this.lazyDeclarationResolver = new LazyDeclarationResolver(globalContext, bindingTrace);
this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver);
this.scriptBodyResolver = new ScriptBodyResolver();
this.additionalFileScopeProvider = new AdditionalFileScopeProvider();
this.bodyResolver = new BodyResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
@@ -179,11 +182,15 @@ public class InjectorForTopDownAnalyzerForJs {
this.resolveSession.setAnnotationResolve(annotationResolver);
this.resolveSession.setDescriptorResolver(descriptorResolver);
this.resolveSession.setJetImportFactory(jetImportsFactory);
this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver);
this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver);
this.resolveSession.setScopeProvider(scopeProvider);
this.resolveSession.setScriptBodyResolver(scriptBodyResolver);
this.resolveSession.setTypeResolver(typeResolver);
scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider);
scopeProvider.setDeclarationScopeProvider(declarationScopeProvider);
this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver);
this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver);
this.lazyTopDownAnalyzer.setKotlinCodeAnalyzer(resolveSession);
@@ -252,8 +259,8 @@ public class InjectorForTopDownAnalyzerForJs {
jetImportsFactory.setProject(project);
scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider);
scopeProvider.setDeclarationScopeProvider(declarationScopeProvider);
lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider);
lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession);
declarationScopeProvider.setFileScopeProvider(scopeProvider);