[AA Standalone] Consider type aliases in direct inheritors search
A type alias may still be inherited from. For example: ``` sealed class MyClass typealias T = MyClass class Inheritor : T() // `Inheritor` is a direct inheritor of `MyClass`. ``` The index is a simplified version of the IDE's `KotlinTypeAliasByExpansionShortNameIndex`, but it should be sufficient for virtually all cases. ^KT-66013
This commit is contained in:
committed by
Space Team
parent
54f2655b4d
commit
a9d7b0c595
@@ -183,16 +183,7 @@ fun StubBasedPsiElementBase<out KotlinClassOrObjectStub<out KtClassOrObject>>.ge
|
||||
|
||||
val file = containingFile
|
||||
if (file is KtFile) {
|
||||
val directive = file.findImportByAlias(referencedName)
|
||||
if (directive != null) {
|
||||
var reference = directive.importedReference
|
||||
while (reference is KtDotQualifiedExpression) {
|
||||
reference = reference.selectorExpression
|
||||
}
|
||||
if (reference is KtSimpleNameExpression) {
|
||||
result.add(reference.getReferencedName())
|
||||
}
|
||||
}
|
||||
getImportedSimpleNameByImportAlias(file, referencedName)?.let(result::add)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -721,4 +712,18 @@ internal fun isKtFile(parent: PsiElement?): Boolean {
|
||||
//avoid loading KtFile which depends on java psi, which is not available in some setup
|
||||
//e.g. remote dev https://youtrack.jetbrains.com/issue/GTW-7554
|
||||
return parent is PsiFile && parent.language == KotlinLanguage.INSTANCE
|
||||
}
|
||||
}
|
||||
|
||||
fun getImportedSimpleNameByImportAlias(file: KtFile, aliasName: String): String? {
|
||||
val directive = file.findImportByAlias(aliasName) ?: return null
|
||||
|
||||
var reference = directive.importedReference
|
||||
while (reference is KtDotQualifiedExpression) {
|
||||
reference = reference.selectorExpression
|
||||
}
|
||||
if (reference is KtSimpleNameExpression) {
|
||||
return reference.getReferencedName()
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user