JVM_IR: skip synthetic enum parameters in signatures

This commit is contained in:
pyos
2020-01-08 14:52:02 +01:00
committed by max-kammerer
parent 94c008872e
commit 88cac53d88
3 changed files with 9 additions and 5 deletions
@@ -68,11 +68,11 @@ open class FunctionCodegen(
functionView,
signature.asmMethod.returnType
)
}
if (irFunction !is IrConstructor || !irFunction.parentAsClass.shouldNotGenerateConstructorParameterAnnotations()) {
generateParameterAnnotations(functionView, methodVisitor, signature, classCodegen, context)
// Not generating parameter annotations for default stubs fixes KT-7892, though
// this certainly looks like a workaround for a javac bug.
if (irFunction !is IrConstructor || !irFunction.parentAsClass.shouldNotGenerateConstructorParameterAnnotations()) {
generateParameterAnnotations(functionView, methodVisitor, signature, classCodegen, context)
}
}
if (!state.classBuilderMode.generateBodies || flags.and(Opcodes.ACC_ABSTRACT) != 0 || irFunction.isExternal) {
@@ -214,6 +214,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext) {
for (parameter in function.valueParameters) {
val kind = when (parameter.origin) {
JvmLoweredDeclarationOrigin.FIELD_FOR_OUTER_THIS -> JvmMethodParameterKind.OUTER
JvmLoweredDeclarationOrigin.ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER -> JvmMethodParameterKind.ENUM_NAME_OR_ORDINAL
else -> JvmMethodParameterKind.VALUE
}
val type = if (forceSingleValueParameterBoxing(function.descriptor)) parameter.type.makeNullable() else parameter.type