Refactored
This commit is contained in:
+6
-6
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -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)
|
||||
|
||||
@@ -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<ClassifierDescriptor>
|
||||
= PsiShortNamesCache.getInstance(project).getClassesByName(name, scope)
|
||||
.map { resolutionFacade.psiClassToDescriptor(it) }
|
||||
.filterNotNull()
|
||||
.filter(descriptorFilter)
|
||||
.toSet()
|
||||
public fun getJvmClassesByName(name: String): Collection<ClassDescriptor> {
|
||||
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<ClassDescriptor> {
|
||||
return KotlinFullClassNameIndex.getInstance().getAllKeys(project).asSequence()
|
||||
|
||||
Reference in New Issue
Block a user