From 97ca5f03895069f11ecdf2878e14df9de0abe315 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 5 Nov 2015 23:20:33 +0300 Subject: [PATCH] Refactored --- .../caches/resolve/JavaResolveExtension.kt | 12 +++++------ .../smart/TypeInstantiationItems.kt | 9 +++++---- .../kotlin/idea/core/KotlinIndicesHelper.kt | 20 +++++++++++-------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index c8eacf6b8d1..e73f2b609d1 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -66,17 +66,17 @@ fun PsiMember.getJavaMemberDescriptor(resolutionFacade: ResolutionFacade? = null } } -fun ResolutionFacade.psiClassToDescriptor( - psiClass: PsiClass, +fun PsiClass.resolveToDescriptor( + resolutionFacade: ResolutionFacade, declarationTranslator: (KtClassOrObject) -> KtClassOrObject? = { it } ): ClassDescriptor? { - return if (psiClass is KtLightClass && psiClass !is KtLightClassForDecompiledDeclaration) { - val origin = psiClass.getOrigin() ?: return null + return if (this is KtLightClass && this !is KtLightClassForDecompiledDeclaration) { + val origin = this.getOrigin() ?: return null val declaration = declarationTranslator(origin) ?: return null - resolveToDescriptor(declaration) + resolutionFacade.resolveToDescriptor(declaration) } else { - psiClass.getJavaClassDescriptor(this) + getJavaClassDescriptor(resolutionFacade) } as? ClassDescriptor } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt index 7a871ab38ae..3e0583dca2c 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations -import org.jetbrains.kotlin.idea.caches.resolve.psiClassToDescriptor +import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.completion.* import org.jetbrains.kotlin.idea.completion.handlers.KotlinFunctionInsertHandler @@ -302,9 +302,10 @@ class TypeInstantiationItems( override fun search(nameFilter: (String) -> Boolean, consumer: (LookupElement) -> Unit) { val parameters = ClassInheritorsSearch.SearchParameters(psiClass, inheritorSearchScope, true, true, false, nameFilter) for (inheritor in ClassInheritorsSearch.search(parameters)) { - val descriptor = resolutionFacade.psiClassToDescriptor( - inheritor, - { toFromOriginalFileMapper.toSyntheticFile(it) as KtClassOrObject? }) as? ClassDescriptor ?: continue + val descriptor = inheritor.resolveToDescriptor( + resolutionFacade, + { toFromOriginalFileMapper.toSyntheticFile(it) as KtClassOrObject? } + ) ?: continue if (!visibilityFilter(descriptor)) continue var inheritorFuzzyType = FuzzyType(descriptor.defaultType, descriptor.typeConstructor.parameters) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt index 1bf13e0c299..d28686e27fe 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt @@ -24,11 +24,14 @@ import com.intellij.psi.search.PsiShortNamesCache import com.intellij.psi.stubs.StringStubIndexExtension import com.intellij.util.Processor import com.intellij.util.indexing.IdFilter -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.caches.resolve.getJavaFieldDescriptor import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor -import org.jetbrains.kotlin.idea.caches.resolve.psiClassToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference +import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.stubindex.* @@ -161,12 +164,13 @@ public class KotlinIndicesHelper( return result } - public fun getJvmClassesByName(name: String): Collection - = PsiShortNamesCache.getInstance(project).getClassesByName(name, scope) - .map { resolutionFacade.psiClassToDescriptor(it) } - .filterNotNull() - .filter(descriptorFilter) - .toSet() + public fun getJvmClassesByName(name: String): Collection { + return PsiShortNamesCache.getInstance(project).getClassesByName(name, scope) + .map { it.resolveToDescriptor(resolutionFacade) } + .filterNotNull() + .filter(descriptorFilter) + .toSet() + } public fun getKotlinClasses(nameFilter: (String) -> Boolean, kindFilter: (ClassKind) -> Boolean): Collection { return KotlinFullClassNameIndex.getInstance().getAllKeys(project).asSequence()