diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt index 84a3ba79baf..d31bf023e60 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt @@ -15,9 +15,7 @@ import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl -import org.jetbrains.kotlin.ir.types.IrSimpleType -import org.jetbrains.kotlin.ir.types.IrTypeProjection -import org.jetbrains.kotlin.ir.types.classOrNull +import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.util.getAnnotation import org.jetbrains.kotlin.ir.util.patchDeclarationParents import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi @@ -55,7 +53,8 @@ class SerializableIrGenerator( // Missing field exception parts val exceptionFqn = getSerializationPackageFqn(MISSING_FIELD_EXC) - val exceptionCtorRef = compilerContext.referenceConstructors(exceptionFqn).single { it.owner.isPrimary } + val exceptionCtorRef = compilerContext.referenceConstructors(exceptionFqn) + .single { it.owner.valueParameters.singleOrNull()?.type?.isString() == true } val exceptionType = exceptionCtorRef.owner.returnType val serializableProperties = properties.serializableProperties diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index 9e500c36ac5..83aa5c2c9aa 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -452,7 +452,8 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil // throw exception on unknown field val exceptionFqn = getSerializationPackageFqn(UNKNOWN_FIELD_EXC) - val excClassRef = compilerContext.referenceConstructors(exceptionFqn).single { it.owner.isPrimary } + val excClassRef = compilerContext.referenceConstructors(exceptionFqn) + .single { it.owner.valueParameters.singleOrNull()?.type?.isInt() == true } +elseBranch( irThrow( irInvoke(