Rename local vars from inlined function
#KT-9798 Fixed
This commit is contained in:
committed by
Natalia Ukhorskaya
parent
5073b1d372
commit
a932315bf9
@@ -75,6 +75,7 @@ public class InlineCodegenUtil {
|
||||
public static final String INLINE_MARKER_FINALLY_END = "finallyEnd";
|
||||
public static final String INLINE_TRANSFORMATION_SUFFIX = "$inlined";
|
||||
public static final String INLINE_FUN_THIS_0_SUFFIX = "$inline_fun";
|
||||
public static final String INLINE_FUN_VAR_SUFFIX = "$iv";
|
||||
|
||||
@Nullable
|
||||
public static SMAPAndMethodNode getMethodNode(
|
||||
|
||||
@@ -353,7 +353,8 @@ public class MethodInliner {
|
||||
@NotNull String name, @NotNull String desc, String signature, @NotNull Label start, @NotNull Label end, int index
|
||||
) {
|
||||
if (isInliningLambda || InlineCodegenUtil.GENERATE_SMAP) {
|
||||
super.visitLocalVariable(name, desc, signature, start, end, getNewIndex(index));
|
||||
String varSuffix = inliningContext.isRoot() && !InlineCodegenUtil.isFakeLocalVariableForInline(name) ? INLINE_FUN_VAR_SUFFIX : "";
|
||||
super.visitLocalVariable(name + varSuffix, desc, signature, start, end, getNewIndex(index));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -15,5 +15,6 @@ class A {
|
||||
// VARIABLE : NAME=zzz TYPE=I INDEX=3
|
||||
// VARIABLE : NAME=it TYPE=I INDEX=2
|
||||
// VARIABLE : NAME=$i$a$1 TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=this$iv TYPE=LA; INDEX=1
|
||||
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=5
|
||||
// VARIABLE : NAME=this TYPE=LA; INDEX=0
|
||||
|
||||
@@ -20,6 +20,7 @@ class A {
|
||||
// VARIABLE : NAME=zzz TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=l TYPE=I INDEX=3
|
||||
// VARIABLE : NAME=$i$a$1 TYPE=I INDEX=5
|
||||
// VARIABLE : NAME=p TYPE=I INDEX=2
|
||||
// VARIABLE : NAME=this$iv TYPE=LA; INDEX=1
|
||||
// VARIABLE : NAME=p$iv TYPE=I INDEX=2
|
||||
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=6
|
||||
// VARIABLE : NAME=this TYPE=LA; INDEX=0
|
||||
|
||||
@@ -15,6 +15,7 @@ class A {
|
||||
// METHOD : A.foo()V
|
||||
// VARIABLE : NAME=zzz TYPE=I INDEX=3
|
||||
// VARIABLE : NAME=$i$a$1 TYPE=I INDEX=4
|
||||
// VARIABLE : NAME=this$iv TYPE=LA; INDEX=2
|
||||
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=5
|
||||
// VARIABLE : NAME=s TYPE=I INDEX=1
|
||||
// VARIABLE : NAME=this TYPE=LA; INDEX=0
|
||||
|
||||
@@ -20,9 +20,11 @@ class A {
|
||||
// METHOD : A.foo()V
|
||||
// VARIABLE : NAME=zz2 TYPE=I INDEX=5
|
||||
// VARIABLE : NAME=$i$a$1 TYPE=I INDEX=6
|
||||
// VARIABLE : NAME=this$iv TYPE=LA; INDEX=4
|
||||
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=7
|
||||
// VARIABLE : NAME=z TYPE=I INDEX=3
|
||||
// VARIABLE : NAME=$i$a$1 TYPE=I INDEX=8
|
||||
// VARIABLE : NAME=this$iv TYPE=LA; INDEX=2
|
||||
// VARIABLE : NAME=$i$f$inlineFun TYPE=I INDEX=9
|
||||
// VARIABLE : NAME=s TYPE=I INDEX=1
|
||||
// VARIABLE : NAME=this TYPE=LA; INDEX=0
|
||||
|
||||
+1
-2
@@ -3,8 +3,6 @@ package parametersOfInlineFun
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val a = A(1)
|
||||
// RESUME: 1
|
||||
//Breakpoint!
|
||||
a.foo { 1 + 1 }
|
||||
}
|
||||
|
||||
@@ -13,6 +11,7 @@ inline fun A.foo(f: (i: Int) -> Unit) {
|
||||
val array = arrayOf(1)
|
||||
val str = "str"
|
||||
val list = listOf("str")
|
||||
//Breakpoint!
|
||||
f(1)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user