[FIR] Fix substituted synthetic property with overridden getter only
When building the original for a substitution override for a synthetic property, use the initial setter as fallback when unsubstituting it returns null. This can happen when a generic class overrides the getter of a synthetic property of a non-generic class. Then the setter is never substituted, therefore there is nothing to unsubstitute. ^KT-57168 Fixed
This commit is contained in:
committed by
Space Team
parent
b3d0a0a1c8
commit
e0baeb53db
+6
@@ -28933,6 +28933,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/javaInterop/syntheticPropClashingWithJvmField.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("syntheticPropOverriddenGetter.kt")
|
||||
public void testSyntheticPropOverriddenGetter() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/javaInterop/syntheticPropOverriddenGetter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unresolvedJavaClassInDifferentFile.kt")
|
||||
public void testUnresolvedJavaClassInDifferentFile() throws Exception {
|
||||
|
||||
+6
@@ -28933,6 +28933,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/javaInterop/syntheticPropClashingWithJvmField.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("syntheticPropOverriddenGetter.kt")
|
||||
public void testSyntheticPropOverriddenGetter() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/javaInterop/syntheticPropOverriddenGetter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unresolvedJavaClassInDifferentFile.kt")
|
||||
public void testUnresolvedJavaClassInDifferentFile() throws Exception {
|
||||
|
||||
@@ -130,7 +130,7 @@ class FirSyntheticPropertiesScope private constructor(
|
||||
property.originalForSubstitutionOverrideAttr = buildSyntheticProperty(
|
||||
propertyName,
|
||||
it,
|
||||
matchingSetter?.originalForSubstitutionOverride
|
||||
matchingSetter?.originalForSubstitutionOverride ?: matchingSetter
|
||||
)
|
||||
}
|
||||
val syntheticSymbol = property.symbol
|
||||
|
||||
Reference in New Issue
Block a user