From 17e89fbbdb91d8b0e5e4c98cdb213e8f170e1d2d Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 28 Jan 2020 14:49:31 +0100 Subject: [PATCH] JVM_IR. Align synthetic parameter name generation across backends --- .../kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 5 ++--- .../kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt | 4 +++- .../bytecodeText/defaultArguments/noSyntheticParameters.kt | 7 ------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 0c62102a350..d1f87abfb86 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -278,6 +278,7 @@ class ExpressionCodegen( } private fun writeParameterInLocalVariableTable(startLabel: Label, endLabel: Label) { + if (irFunction.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER) return if (!irFunction.isStatic) { mv.visitLocalVariable("this", classCodegen.type.descriptor, null, startLabel, endLabel, 0) } @@ -286,9 +287,7 @@ class ExpressionCodegen( writeValueParameterInLocalVariableTable(extensionReceiverParameter, startLabel, endLabel, true) } for (param in irFunction.valueParameters) { - if (!param.origin.isSynthetic) { - writeValueParameterInLocalVariableTable(param, startLabel, endLabel, false) - } + writeValueParameterInLocalVariableTable(param, startLabel, endLabel, false) } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt index 3239f3ac9f3..c8618115ccb 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt @@ -7,6 +7,8 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext +import org.jetbrains.kotlin.backend.common.descriptors.synthesizedName +import org.jetbrains.kotlin.backend.common.descriptors.synthesizedString import org.jetbrains.kotlin.backend.common.ir.* import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin @@ -177,7 +179,7 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : IrEle accessor.returnType = source.returnType.remapTypeParameters(source, accessor) accessor.addValueParameter( - "marker", context.ir.symbols.defaultConstructorMarker.defaultType, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR + "constructor_marker".synthesizedString, context.ir.symbols.defaultConstructorMarker.defaultType, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR ) accessor.body = IrExpressionBodyImpl( diff --git a/compiler/testData/codegen/bytecodeText/defaultArguments/noSyntheticParameters.kt b/compiler/testData/codegen/bytecodeText/defaultArguments/noSyntheticParameters.kt index 2de1db5693b..33750a9543e 100644 --- a/compiler/testData/codegen/bytecodeText/defaultArguments/noSyntheticParameters.kt +++ b/compiler/testData/codegen/bytecodeText/defaultArguments/noSyntheticParameters.kt @@ -3,13 +3,6 @@ fun foo(param: String = "123") {} -//TODO: align backends - -// JVM_TEMPLATES // 1 LOCALVARIABLE param // 1 LOCALVARIABLE -// JVM_IR_TEMPLATES -// 2 LOCALVARIABLE param -// 2 LOCALVARIABLE -