FIR: Use attribute instead of overriddenSymbol for synthetic type alias constructor
This commit is contained in:
@@ -225,6 +225,11 @@ internal tailrec fun FirCallableSymbol<*>.unwrapSubstitutionAndIntersectionOverr
|
||||
}
|
||||
|
||||
internal tailrec fun FirCallableSymbol<*>.unwrapCallRepresentative(root: FirCallableSymbol<*> = this): FirCallableSymbol<*> {
|
||||
val fir = fir
|
||||
if (fir is FirConstructor) {
|
||||
val originalForTypeAlias = fir.originalConstructorIfTypeAlias
|
||||
if (originalForTypeAlias != null) return originalForTypeAlias.symbol.unwrapCallRepresentative(this)
|
||||
}
|
||||
if (fir.isIntersectionOverride) return this
|
||||
|
||||
val overriddenSymbol = fir.originalForSubstitutionOverride?.takeIf {
|
||||
|
||||
+7
-2
@@ -232,7 +232,7 @@ private fun prepareSubstitutingScopeForTypeAliasConstructors(
|
||||
typeAliasSymbol: FirTypeAliasSymbol,
|
||||
session: FirSession,
|
||||
delegatingScope: FirScope
|
||||
): FirScope? {
|
||||
): FirScope {
|
||||
val copyFactory2: ConstructorCopyFactory<FirConstructor> = factory@{ newReturnType, newParameterTypes, newTypeParameters ->
|
||||
buildConstructor {
|
||||
source = this@factory.source
|
||||
@@ -329,7 +329,9 @@ private fun prepareCopyConstructorForTypealiasNestedClass(
|
||||
val extCopy = buildConstructorCopy(originalSymbol.fir) {
|
||||
origin = FirDeclarationOrigin.Synthetic
|
||||
receiverTypeRef = innerTypeRef.withReplacedConeType(outerType)
|
||||
symbol = FirConstructorSymbol(originalSymbol.callableId, overriddenSymbol = originalSymbol)
|
||||
symbol = FirConstructorSymbol(originalSymbol.callableId)
|
||||
}.apply {
|
||||
originalConstructorIfTypeAlias = originalSymbol.fir
|
||||
}
|
||||
return extCopy.symbol
|
||||
}
|
||||
@@ -337,3 +339,6 @@ private fun prepareCopyConstructorForTypealiasNestedClass(
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
private object TypeAliasConstructorKey : FirDeclarationDataKey()
|
||||
var FirConstructor.originalConstructorIfTypeAlias: FirConstructor? by FirDeclarationDataRegistry.data(TypeAliasConstructorKey)
|
||||
|
||||
Reference in New Issue
Block a user