JVM_IR: specify correct type for defaultConstructorMarker arguments

This commit is contained in:
Georgy Bronnikov
2019-10-10 11:33:26 +03:00
parent 6f2768e774
commit c70b2e3e4b
3 changed files with 6 additions and 3 deletions
@@ -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)
@@ -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()
)
)
}
@@ -1,3 +1,4 @@
class A (i: Int = 0)
// 0 ATHROW
// 0 ATHROW
// 0 CHECKCAST