Navigation: Resolve typealiased SAM-references to type alias declaration
#KT-15302 Fixed
This commit is contained in:
+8
-3
@@ -17,17 +17,22 @@
|
||||
package org.jetbrains.kotlin.load.java.sam
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithNavigationSubstitute
|
||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||
|
||||
interface SamTypeAliasConstructorDescriptor : SamConstructorDescriptor {
|
||||
interface SamTypeAliasConstructorDescriptor : SamConstructorDescriptor, DeclarationDescriptorWithNavigationSubstitute {
|
||||
val typeAliasDescriptor: TypeAliasDescriptor
|
||||
|
||||
override val substitute: DeclarationDescriptor
|
||||
get() = typeAliasDescriptor
|
||||
}
|
||||
|
||||
class SamTypeAliasConstructorDescriptorImpl(
|
||||
override val typeAliasDescriptor: TypeAliasDescriptor,
|
||||
private val samInterfaceConstructorDescriptor: SamConstructorDescriptor
|
||||
override val typeAliasDescriptor: TypeAliasDescriptor,
|
||||
private val samInterfaceConstructorDescriptor: SamConstructorDescriptor
|
||||
) : SimpleFunctionDescriptorImpl(
|
||||
typeAliasDescriptor.containingDeclaration,
|
||||
null,
|
||||
|
||||
@@ -31,6 +31,11 @@ import java.util.*
|
||||
|
||||
object DescriptorToSourceUtils {
|
||||
private fun collectEffectiveReferencedDescriptors(result: MutableList<DeclarationDescriptor>, descriptor: DeclarationDescriptor) {
|
||||
if (descriptor is DeclarationDescriptorWithNavigationSubstitute) {
|
||||
collectEffectiveReferencedDescriptors(result, descriptor.substitute)
|
||||
return
|
||||
}
|
||||
|
||||
if (descriptor is CallableMemberDescriptor) {
|
||||
val kind = descriptor.kind
|
||||
if (kind != DECLARATION && kind != SYNTHESIZED) {
|
||||
|
||||
Reference in New Issue
Block a user