diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt index 0eb8612d89f..92126bb5437 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt @@ -108,12 +108,6 @@ class InventNamesForLocalClasses(private val context: JvmBackendContext) : FileL localFunctionNames[(declaration as IrFunction).symbol] = name } } - declaration is IrFunction && declaration.parent !is IrClass -> { - // In the old backend, only names of non-local functions are stored in names of anonymous classes. All other names - // are replaced with indices. For example, a local class `L` in a top-level function `f` will have the name `...$f$L`, - // but inside a local function `g` (which is in `f`) it will have the name `...$f$1$L` (_not_ `...$f$g$L`). - inventName(null, data) - } enclosingName != null -> "$enclosingName$$simpleName" else -> simpleName } diff --git a/compiler/testData/checkLocalVariablesTable/itInReturnedLambda.kt b/compiler/testData/checkLocalVariablesTable/itInReturnedLambda.kt index 23478ff5561..e69b36b2a8a 100644 --- a/compiler/testData/checkLocalVariablesTable/itInReturnedLambda.kt +++ b/compiler/testData/checkLocalVariablesTable/itInReturnedLambda.kt @@ -6,6 +6,14 @@ fun foo() { } } +// Names of local functions are used in names of local classes for IR, but only indices are used for non-IR. + +// JVM_TEMPLATES // METHOD : ItInReturnedLambdaKt$foo$1$1.invoke(I)V // VARIABLE : NAME=this TYPE=LItInReturnedLambdaKt$foo$1$1; INDEX=0 // VARIABLE : NAME=it TYPE=I INDEX=1 + +// JVM_IR_TEMPLATES +// METHOD : ItInReturnedLambdaKt$foo$bar$1.invoke(I)V +// VARIABLE : NAME=this TYPE=LItInReturnedLambdaKt$foo$bar$1; INDEX=0 +// VARIABLE : NAME=it TYPE=I INDEX=1 diff --git a/compiler/testData/codegen/box/reflection/classes/localClassSimpleName.kt b/compiler/testData/codegen/box/reflection/classes/localClassSimpleName.kt index 03823437f35..f31333fd816 100644 --- a/compiler/testData/codegen/box/reflection/classes/localClassSimpleName.kt +++ b/compiler/testData/codegen/box/reflection/classes/localClassSimpleName.kt @@ -1,5 +1,4 @@ // IGNORE_BACKEND_FIR: JVM_IR -// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: NATIVE // WITH_RUNTIME