JVM IR: do not generate extension receiver parameter as ACC_MANDATED

Otherwise Java reflection is not able to load its type as a
parameterized type.

 #KT-40857 Fixed
This commit is contained in:
Alexander Udalov
2023-02-28 23:30:23 +01:00
committed by Space Team
parent d23a4f46cc
commit 47c48efa33
9 changed files with 62 additions and 16 deletions
@@ -337,7 +337,7 @@ private fun IrValueParameter.isSyntheticMarkerParameter(): Boolean =
private fun generateParameterNames(irFunction: IrFunction, mv: MethodVisitor, state: GenerationState) {
irFunction.extensionReceiverParameter?.let {
mv.visitParameter(irFunction.extensionReceiverName(state), Opcodes.ACC_MANDATED)
mv.visitParameter(irFunction.extensionReceiverName(state), 0)
}
for (irParameter in irFunction.valueParameters) {
// A construct emitted by a Java compiler must be marked as synthetic if it does not correspond to a construct declared