FIR: don't copy initializer for field override, unwrap it instead
This commit is contained in:
committed by
Space Team
parent
c698d060c6
commit
237f357016
+1
-1
@@ -1110,7 +1110,7 @@ class Fir2IrDeclarationStorage(
|
||||
} else {
|
||||
fieldStaticOverrideCache[field.name to classId] = this
|
||||
}
|
||||
val initializer = field.initializer
|
||||
val initializer = field.unwrapFakeOverrides().initializer
|
||||
if (initializer is FirConstExpression<*>) {
|
||||
this.initializer = factory.createExpressionBody(initializer.toIrConst(type))
|
||||
}
|
||||
|
||||
+1
-1
@@ -173,7 +173,7 @@ class FakeOverrideGenerator(
|
||||
FirFakeOverrideGenerator.createSubstitutionOverrideField(
|
||||
session, firField, callableSymbol,
|
||||
newReturnType = firField.returnTypeRef.coneType,
|
||||
firClass.symbol.classId, withInitializer = true
|
||||
derivedClassId = firClass.symbol.classId
|
||||
)
|
||||
},
|
||||
baseStaticFieldSymbols,
|
||||
|
||||
+1
-1
@@ -311,7 +311,7 @@ class FirClassSubstitutionScope(
|
||||
val newReturnType = returnType?.substitute() ?: return original
|
||||
|
||||
return FirFakeOverrideGenerator.createSubstitutionOverrideField(
|
||||
session, member, original, newReturnType, newOwnerClassId, withInitializer = false
|
||||
session, member, original, newReturnType, newOwnerClassId
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+1
-5
@@ -487,8 +487,7 @@ object FirFakeOverrideGenerator {
|
||||
baseField: FirField,
|
||||
baseSymbol: FirFieldSymbol,
|
||||
newReturnType: ConeKotlinType?,
|
||||
derivedClassId: ClassId?,
|
||||
withInitializer: Boolean
|
||||
derivedClassId: ClassId?
|
||||
): FirFieldSymbol {
|
||||
val symbol = FirFieldSymbol(
|
||||
CallableId(derivedClassId ?: baseSymbol.callableId.classId!!, baseField.name)
|
||||
@@ -508,9 +507,6 @@ object FirFakeOverrideGenerator {
|
||||
annotations += baseField.annotations
|
||||
attributes = baseField.attributes.copy()
|
||||
dispatchReceiverType = baseField.dispatchReceiverType
|
||||
if (withInitializer) {
|
||||
initializer = baseField.initializer
|
||||
}
|
||||
}.apply {
|
||||
originalForSubstitutionOverrideAttr = baseField
|
||||
if (isStatic && derivedClassId != null) {
|
||||
|
||||
Reference in New Issue
Block a user