FIR: support direct use of typealias with friend-paths
also fixes one IC test
This commit is contained in:
+1
@@ -179,6 +179,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
typeParameters += local.typeDeserializer.ownTypeParameters.map { it.fir }
|
typeParameters += local.typeDeserializer.ownTypeParameters.map { it.fir }
|
||||||
}.apply {
|
}.apply {
|
||||||
versionRequirementsTable = c.versionRequirementTable
|
versionRequirementsTable = c.versionRequirementTable
|
||||||
|
sourceElement = c.containerSource
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,10 +169,13 @@ private object SourceElementKey : FirDeclarationDataKey()
|
|||||||
|
|
||||||
var FirRegularClass.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey)
|
var FirRegularClass.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey)
|
||||||
|
|
||||||
|
var FirTypeAlias.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey)
|
||||||
|
|
||||||
val FirMemberDeclaration.containerSource: SourceElement?
|
val FirMemberDeclaration.containerSource: SourceElement?
|
||||||
get() = when (this) {
|
get() = when (this) {
|
||||||
is FirCallableMemberDeclaration<*> -> containerSource
|
is FirCallableMemberDeclaration<*> -> containerSource
|
||||||
is FirRegularClass -> sourceElement
|
is FirRegularClass -> sourceElement
|
||||||
|
is FirTypeAlias -> sourceElement
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -13,3 +13,5 @@ internal val internalVal = ""
|
|||||||
internal fun internalFun(s: String): String = s
|
internal fun internalFun(s: String): String = s
|
||||||
|
|
||||||
internal typealias InternalTypealias = InternalInterface
|
internal typealias InternalTypealias = InternalInterface
|
||||||
|
|
||||||
|
internal typealias InternalClassAlias = PublicClass
|
||||||
+2
@@ -8,3 +8,5 @@ private fun test(i: InternalInterface): InternalTypealias {
|
|||||||
|
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val x = InternalClassAlias
|
||||||
Reference in New Issue
Block a user