JVM IR: Generate LVT entries for parameters in inline $default methods
This commit is contained in:
committed by
max-kammerer
parent
347a984ce0
commit
bef0437edb
+3
-1
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user