K2: fix exception in deserializer for external setter #KT-53031 Fixed
This commit is contained in:
+1
-4
@@ -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 }
|
||||
|
||||
+6
@@ -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"
|
||||
}
|
||||
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user