diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt index ef4268c2866..386796a5d05 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt @@ -368,8 +368,9 @@ open class DefaultParameterInjector( ) } if (expression.symbol is IrConstructorSymbol) { + val defaultArgumentMarker = context.ir.symbols.defaultConstructorMarker params += markerParameterDeclaration(realFunction) to - IrConstImpl.constNull(startOffset, endOffset, context.irBuiltIns.nothingNType) + IrConstImpl.constNull(startOffset, endOffset, defaultArgumentMarker.owner.defaultType.makeNullable()) } else if (context.ir.shouldGenerateHandlerParameterForDefaultBodyFun()) { params += realFunction.valueParameters.last() to IrConstImpl.constNull(startOffset, endOffset, context.irBuiltIns.nothingNType) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt index b1ceed403ef..1f42eff1af0 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.types.classOrNull import org.jetbrains.kotlin.ir.types.classifierOrNull import org.jetbrains.kotlin.ir.types.isSubtypeOfClass +import org.jetbrains.kotlin.ir.types.makeNullable import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.load.java.JavaVisibilities @@ -329,7 +330,7 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : IrEle IrConstImpl.constNull( UNDEFINED_OFFSET, UNDEFINED_OFFSET, - context.ir.symbols.defaultConstructorMarker.owner.defaultType + context.ir.symbols.defaultConstructorMarker.owner.defaultType.makeNullable() ) ) } diff --git a/compiler/testData/codegen/bytecodeText/noSuperCheckInDefaultConstuctor.kt b/compiler/testData/codegen/bytecodeText/noSuperCheckInDefaultConstuctor.kt index ac8c55c839f..97f2de62740 100644 --- a/compiler/testData/codegen/bytecodeText/noSuperCheckInDefaultConstuctor.kt +++ b/compiler/testData/codegen/bytecodeText/noSuperCheckInDefaultConstuctor.kt @@ -1,3 +1,4 @@ class A (i: Int = 0) -// 0 ATHROW \ No newline at end of file +// 0 ATHROW +// 0 CHECKCAST \ No newline at end of file