Skip to content

Commit eea4ff3

Browse files
committed
Adapt serialization exceptions constructor calls to signature change
(see Kotlin/kotlinx.serialization#1054)
1 parent fe5dbf7 commit eea4ff3

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ import org.jetbrains.kotlin.ir.builders.*
1515
import org.jetbrains.kotlin.ir.declarations.*
1616
import org.jetbrains.kotlin.ir.expressions.IrExpression
1717
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
18-
import org.jetbrains.kotlin.ir.types.IrSimpleType
19-
import org.jetbrains.kotlin.ir.types.IrTypeProjection
20-
import org.jetbrains.kotlin.ir.types.classOrNull
18+
import org.jetbrains.kotlin.ir.types.*
2119
import org.jetbrains.kotlin.ir.util.getAnnotation
2220
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
2321
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
@@ -55,7 +53,8 @@ class SerializableIrGenerator(
5553

5654
// Missing field exception parts
5755
val exceptionFqn = getSerializationPackageFqn(MISSING_FIELD_EXC)
58-
val exceptionCtorRef = compilerContext.referenceConstructors(exceptionFqn).single { it.owner.isPrimary }
56+
val exceptionCtorRef = compilerContext.referenceConstructors(exceptionFqn)
57+
.single { it.owner.valueParameters.singleOrNull()?.type?.isString() == true }
5958
val exceptionType = exceptionCtorRef.owner.returnType
6059

6160
val serializableProperties = properties.serializableProperties

plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,8 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil
452452
// throw exception on unknown field
453453

454454
val exceptionFqn = getSerializationPackageFqn(UNKNOWN_FIELD_EXC)
455-
val excClassRef = compilerContext.referenceConstructors(exceptionFqn).single { it.owner.isPrimary }
455+
val excClassRef = compilerContext.referenceConstructors(exceptionFqn)
456+
.single { it.owner.valueParameters.singleOrNull()?.type?.isInt() == true }
456457
+elseBranch(
457458
irThrow(
458459
irInvoke(

0 commit comments

Comments
 (0)