K2: fix exception in deserializer for external setter #KT-53031 Fixed

This commit is contained in:
Mikhail Glukhikh
2022-07-12 17:01:14 +02:00
committed by Space
parent 1336ec6a0b
commit 70e15b281c
4 changed files with 31 additions and 4 deletions
@@ -287,10 +287,7 @@ class FirElementSerializer private constructor(
}
val nonSourceAnnotations = setter.nonSourceAnnotations(session, property)
if (setter !is FirDefaultPropertyAccessor ||
nonSourceAnnotations.isNotEmpty() ||
setter.visibility != property.visibility
) {
if (Flags.IS_NOT_DEFAULT.get(accessorFlags)) {
val setterLocal = local.createChildSerializer(setter)
for (valueParameterDescriptor in setter.valueParameters) {
val annotations = nonSourceAnnotations.filter { it.useSiteTarget == AnnotationUseSiteTarget.SETTER_PARAMETER }
@@ -17787,6 +17787,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/fir/ExtensionAlias.kt");
}
@Test
@TestMetadata("externalInDependency.kt")
public void testExternalInDependency() throws Exception {
runTest("compiler/testData/codegen/box/fir/externalInDependency.kt");
}
@Test
@TestMetadata("FakeOverrideBuilder.kt")
public void testFakeOverrideBuilder() throws Exception {
@@ -0,0 +1,18 @@
// TARGET_BACKEND: JVM_IR
// MODULE: m1
// FILE: f1.kt
object O {
var prop: String
external get
external set
}
// MODULE: m2(m1)
// FILE: f2.kt
fun box(): String {
O.hashCode() // Necessary to deserialize O
return "OK"
}
@@ -17787,6 +17787,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/fir/ExtensionAlias.kt");
}
@Test
@TestMetadata("externalInDependency.kt")
public void testExternalInDependency() throws Exception {
runTest("compiler/testData/codegen/box/fir/externalInDependency.kt");
}
@Test
@TestMetadata("FakeOverrideBuilder.kt")
public void testFakeOverrideBuilder() throws Exception {