Navigation to binaries: support navigation to type alias constructors
#KT-13479 Fixed
This commit is contained in:
+2
-1
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
interface TypeAliasConstructorDescriptor : ConstructorDescriptor {
|
||||
val underlyingConstructorDescriptor: ClassConstructorDescriptor
|
||||
val typeAliasDescriptor: TypeAliasDescriptor
|
||||
|
||||
override fun getContainingDeclaration(): TypeAliasDescriptor
|
||||
|
||||
@@ -45,7 +46,7 @@ interface TypeAliasConstructorDescriptor : ConstructorDescriptor {
|
||||
}
|
||||
|
||||
class TypeAliasConstructorDescriptorImpl private constructor(
|
||||
val typeAliasDescriptor: TypeAliasDescriptor,
|
||||
override val typeAliasDescriptor: TypeAliasDescriptor,
|
||||
override val underlyingConstructorDescriptor: ClassConstructorDescriptor,
|
||||
original: TypeAliasConstructorDescriptor?,
|
||||
annotations: Annotations,
|
||||
|
||||
+6
@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.EverythingGlobalScope
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||
import org.jetbrains.kotlin.idea.decompiler.KtDecompiledFile
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.DecompiledTextIndexer
|
||||
import org.jetbrains.kotlin.idea.stubindex.*
|
||||
@@ -81,6 +82,7 @@ private fun findCandidateDeclarationsInIndex(
|
||||
}
|
||||
|
||||
val topLevelDeclaration = DescriptorUtils.getParentOfType(referencedDescriptor, PropertyDescriptor::class.java, false)
|
||||
?: DescriptorUtils.getParentOfType(referencedDescriptor, TypeAliasConstructorDescriptor::class.java, false)?.typeAliasDescriptor
|
||||
?: DescriptorUtils.getParentOfType(referencedDescriptor, FunctionDescriptor::class.java, false)
|
||||
?: DescriptorUtils.getParentOfType(referencedDescriptor, TypeAliasDescriptor::class.java, false)
|
||||
?: return emptyList()
|
||||
@@ -109,6 +111,10 @@ object ByDescriptorIndexer : DecompiledTextIndexer<String> {
|
||||
internal fun getDeclarationForDescriptor(descriptor: DeclarationDescriptor, file: KtDecompiledFile): KtDeclaration? {
|
||||
val original = descriptor.original
|
||||
|
||||
if (original is TypeAliasConstructorDescriptor) {
|
||||
return getDeclarationForDescriptor(original.typeAliasDescriptor, file)
|
||||
}
|
||||
|
||||
if (original is ValueParameterDescriptor) {
|
||||
val callable = original.containingDeclaration
|
||||
val callableDeclaration = getDeclarationForDescriptor(callable, file) as? KtCallableDeclaration ?: return null
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
MainKt.class
|
||||
public typealias <1>SimpleClassAlias = testData.libraries.SimpleClass
|
||||
public typealias <1><2>SimpleClassAlias = testData.libraries.SimpleClass
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import testData.libraries.*
|
||||
|
||||
fun foo(c: SimpleClassAlias) {
|
||||
val s = SimpleClassAlias()
|
||||
}
|
||||
@@ -1,2 +1,2 @@
|
||||
main.kt
|
||||
typealias <1>SimpleClassAlias = SimpleClass
|
||||
typealias <1><2>SimpleClassAlias = SimpleClass
|
||||
|
||||
Reference in New Issue
Block a user