From 7f70a4ae8987a495284be6c3a6c616f231ceb107 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 1 Jun 2015 18:50:21 +0300 Subject: [PATCH] Minor: extract implementation of ResolutionFacade to a separate class --- .../idea/caches/resolve/KotlinCacheService.kt | 74 ++++++++++--------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt index 88a26a5e6ee..a3c851286a9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheService.kt @@ -49,41 +49,10 @@ public class KotlinCacheService(val project: Project) { } public fun getResolutionFacade(elements: List): ResolutionFacade { - val cache = getCacheToAnalyzeFiles(elements.map { it.getContainingJetFile() }) - return object : ResolutionFacade { - override fun analyze(element: JetElement, bodyResolveMode: BodyResolveMode): BindingContext { - return cache.getLazyResolveSession(element).resolveToElement(element, bodyResolveMode) - } - - override fun findModuleDescriptor(element: JetElement): ModuleDescriptor { - return cache.getLazyResolveSession(element).getModuleDescriptor() - } - - override fun resolveToDescriptor(declaration: JetDeclaration): DeclarationDescriptor { - return cache.getLazyResolveSession(declaration).resolveToDescriptor(declaration) - } - - override fun analyzeFullyAndGetResult(elements: Collection): AnalysisResult { - return cache.getAnalysisResultsForElements(elements) - } - - override fun getFileTopLevelScope(file: JetFile): JetScope { - return cache.getLazyResolveSession(file).getScopeProvider().getFileScope(file) - } - - override fun resolveImportReference(moduleDescriptor: ModuleDescriptor, fqName: FqName, isDefaultImport: Boolean): Collection { - val importDirective = JetPsiFactory(project).createImportDirective(ImportPath(fqName, false)) - val resolveSession = cache.getLazyResolveSession(moduleDescriptor) - val scope = JetModuleUtil.getImportsResolutionScope(moduleDescriptor, !isDefaultImport) - val resolver = resolveSession.getQualifiedExpressionResolver() - return resolver.processImportReference( - importDirective, scope, scope, BindingTraceContext(), QualifiedExpressionResolver.LookupMode.EVERYTHING).getAllDescriptors() - } - - override fun get(extension: CacheExtension): T { - return cache[extension] - } - } + return ResolutionFacadeImpl( + project, + getCacheToAnalyzeFiles(elements.map { it.getContainingJetFile() }) + ) } fun globalResolveSessionProvider( @@ -227,3 +196,38 @@ public class KotlinCacheService(val project: Project) { return getGlobalCache(extension.platform)[extension] } } + +private class ResolutionFacadeImpl(private val project: Project, private val cache: KotlinResolveCache) : ResolutionFacade { + override fun analyze(element: JetElement, bodyResolveMode: BodyResolveMode): BindingContext { + return cache.getLazyResolveSession(element).resolveToElement(element, bodyResolveMode) + } + + override fun findModuleDescriptor(element: JetElement): ModuleDescriptor { + return cache.getLazyResolveSession(element).getModuleDescriptor() + } + + override fun resolveToDescriptor(declaration: JetDeclaration): DeclarationDescriptor { + return cache.getLazyResolveSession(declaration).resolveToDescriptor(declaration) + } + + override fun analyzeFullyAndGetResult(elements: Collection): AnalysisResult { + return cache.getAnalysisResultsForElements(elements) + } + + override fun getFileTopLevelScope(file: JetFile): JetScope { + return cache.getLazyResolveSession(file).getScopeProvider().getFileScope(file) + } + + override fun resolveImportReference(moduleDescriptor: ModuleDescriptor, fqName: FqName, isDefaultImport: Boolean): Collection { + val importDirective = JetPsiFactory(project).createImportDirective(ImportPath(fqName, false)) + val resolveSession = cache.getLazyResolveSession(moduleDescriptor) + val scope = JetModuleUtil.getImportsResolutionScope(moduleDescriptor, !isDefaultImport) + val resolver = resolveSession.getQualifiedExpressionResolver() + return resolver.processImportReference( + importDirective, scope, scope, BindingTraceContext(), QualifiedExpressionResolver.LookupMode.EVERYTHING).getAllDescriptors() + } + + override fun get(extension: CacheExtension): T { + return cache[extension] + } +} \ No newline at end of file