From e041042328804fc6cbdc2703667cf8144840d239 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 5 Aug 2015 12:44:15 +0300 Subject: [PATCH] Minor: move getResolveScope out of ResolutionFacade --- .../kotlin/idea/caches/resolve/ResolutionFacade.kt | 13 ------------- .../kotlin/idea/caches/resolve/resolutionApi.kt | 11 +++++++++++ .../kotlin/idea/completion/CompletionSession.kt | 6 ++---- .../jetbrains/kotlin/idea/quickfix/AutoImportFix.kt | 3 ++- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacade.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacade.kt index 6b53bff04cd..e3f67cfb346 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacade.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacade.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.idea.caches.resolve import com.intellij.psi.PsiElement -import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -52,18 +51,6 @@ public interface ResolutionFacade { public fun getIdeService(element: PsiElement, serviceClass: Class): T public fun getIdeService(moduleDescriptor: ModuleDescriptor, serviceClass: Class): T - - companion object { - //NOTE: idea default API returns module search scope for file under module but not in source or production source (for example, test data ) - // this scope can't be used to search for kotlin declarations in index in order to resolve in that case - // see com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl.getInherentResolveScope - public fun getResolveScope(file: JetFile): GlobalSearchScope { - return when (file.getModuleInfo()) { - is ModuleSourceInfo -> file.getResolveScope() - else -> GlobalSearchScope.EMPTY_SCOPE - } - } - } } public inline fun ResolutionFacade.frontendService(element: PsiElement): T diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt index d6b7e46e6a7..f2062b89ba9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea.caches.resolve +import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -65,3 +66,13 @@ public fun JetElement.analyzeFully(): BindingContext { public fun JetElement.analyzeFullyAndGetResult(vararg extraFiles: JetFile): AnalysisResult { return KotlinCacheService.getInstance(getProject()).getResolutionFacade(listOf(this) + extraFiles.toList()).analyzeFullyAndGetResult(listOf(this)) } + +//NOTE: idea default API returns module search scope for file under module but not in source or production source (for example, test data ) +// this scope can't be used to search for kotlin declarations in index in order to resolve in that case +// see com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl.getInherentResolveScope +public fun getResolveScope(file: JetFile): GlobalSearchScope { + return when (file.getModuleInfo()) { + is ModuleSourceInfo -> file.getResolveScope() + else -> GlobalSearchScope.EMPTY_SCOPE + } +} diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt index 6dee54364c3..e9087f09600 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt @@ -27,9 +27,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.search.DelegatingGlobalSearchScope import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade -import org.jetbrains.kotlin.idea.caches.resolve.frontendService -import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade +import org.jetbrains.kotlin.idea.caches.resolve.* import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper @@ -178,7 +176,7 @@ abstract class CompletionSession(protected val configuration: CompletionSessionC LookupElementsCollector(prefixMatcher, parameters, resultSet, resolutionFacade, lookupElementFactory, createSorter(), inDescriptor, collectorContext) } - protected val originalSearchScope: GlobalSearchScope = ResolutionFacade.getResolveScope(parameters.getOriginalFile() as JetFile) + protected val originalSearchScope: GlobalSearchScope = getResolveScope(parameters.getOriginalFile() as JetFile) // we need to exclude the original file from scope because our resolve session is built with this file replaced by synthetic one protected val searchScope: GlobalSearchScope = object : DelegatingGlobalSearchScope(originalSearchScope) { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt index 20d475b4ff1..e2326e5ae69 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.idea.JetBundle import org.jetbrains.kotlin.idea.actions.JetAddImportAction import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade +import org.jetbrains.kotlin.idea.caches.resolve.getResolveScope import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper import org.jetbrains.kotlin.idea.core.isVisible import org.jetbrains.kotlin.idea.project.ProjectStructureUtil @@ -114,7 +115,7 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction