JVM IR: Generate LVT entries for parameters in inline $default methods

This commit is contained in:
Steven Schäfer
2020-08-18 18:34:00 +02:00
committed by max-kammerer
parent 347a984ce0
commit bef0437edb
@@ -299,7 +299,7 @@ class ExpressionCodegen(
} }
private fun writeParameterInLocalVariableTable(startLabel: Label, endLabel: Label) { private fun writeParameterInLocalVariableTable(startLabel: Label, endLabel: Label) {
if (irFunction.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER) return if (!irFunction.isInline && irFunction.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER) return
if (!irFunction.isStatic) { if (!irFunction.isStatic) {
mv.visitLocalVariable("this", classCodegen.type.descriptor, null, startLabel, endLabel, 0) mv.visitLocalVariable("this", classCodegen.type.descriptor, null, startLabel, endLabel, 0)
} }
@@ -308,6 +308,8 @@ class ExpressionCodegen(
writeValueParameterInLocalVariableTable(extensionReceiverParameter, startLabel, endLabel, true) writeValueParameterInLocalVariableTable(extensionReceiverParameter, startLabel, endLabel, true)
} }
for (param in irFunction.valueParameters) { for (param in irFunction.valueParameters) {
if (param.origin == IrDeclarationOrigin.MASK_FOR_DEFAULT_FUNCTION || param.origin == IrDeclarationOrigin.METHOD_HANDLER_IN_DEFAULT_FUNCTION)
continue
writeValueParameterInLocalVariableTable(param, startLabel, endLabel, false) writeValueParameterInLocalVariableTable(param, startLabel, endLabel, false)
} }
} }