diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt index 990600e81fd..9a932e18b1d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt @@ -151,6 +151,7 @@ class MethodInliner( // MethodRemapper doesn't extends LocalVariablesSorter, but RemappingMethodAdapter does. // So wrapping with LocalVariablesSorter to keep old behavior + // TODO: investigate LocalVariablesSorter removing (see also same code in RemappingClassBuilder.java) val remappingMethodAdapter = MethodRemapper( LocalVariablesSorter( resultNode.access, diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/RemappingClassBuilder.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/RemappingClassBuilder.java index 1a39e524cc8..a17e613eb42 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/RemappingClassBuilder.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/RemappingClassBuilder.java @@ -82,8 +82,15 @@ public class RemappingClassBuilder extends DelegatingClassBuilder { @Nullable String signature, @Nullable String[] exceptions ) { + String newDescriptor = remapper.mapMethodDesc(desc); + // MethodRemapper doesn't extends LocalVariablesSorter, but RemappingMethodAdapter does. + // So wrapping with LocalVariablesSorter to keep old behavior. + // TODO: investigate LocalVariablesSorter removing (see also same code in MethodInliner) return new MethodRemapper( - builder.newMethod(origin, access, name, remapper.mapMethodDesc(desc), remapper.mapSignature(signature, false), exceptions), + new LocalVariablesSorter( + access, newDescriptor, + builder.newMethod(origin, access, name, newDescriptor, remapper.mapSignature(signature, false), + exceptions)), remapper ); }