提交 11d8b28f 编写于 作者: S Skylot

core: fix variable rename

上级 12b63712
......@@ -200,7 +200,7 @@ public class MethodGen {
return name;
}
name = getUniqVarName(name);
arg.getSVar().setName(name);
arg.getSVar().setVariableName(name);
return name;
}
......
......@@ -107,6 +107,23 @@ public class SSAVar {
}
}
public void setVariableName(String name) {
setName(name);
if (isUsedInPhi()) {
PhiInsn phi = getUsedInPhi();
phi.getResult().getSVar().setVariableName(name);
for (InsnArg arg : phi.getArguments()) {
if (arg.isRegister()) {
RegisterArg reg = (RegisterArg) arg;
SSAVar sVar = reg.getSVar();
if (sVar != this && !name.equals(reg.getName())) {
sVar.setVariableName(name);
}
}
}
}
}
public void mergeName(RegisterArg arg) {
if (arg.getName() != null) {
setName(arg.getName());
......
......@@ -11,7 +11,7 @@ import static org.junit.Assert.assertThat;
public class TestInline2 extends InternalJadxTest {
public static class TestCls {
public int simple_loops() throws InterruptedException {
public int test() throws InterruptedException {
int[] a = new int[]{1, 2, 4, 6, 8};
int b = 0;
for (int i = 0; i < a.length; i++) {
......@@ -28,7 +28,11 @@ public class TestInline2 extends InternalJadxTest {
public void test() {
ClassNode cls = getClassNode(TestCls.class);
String code = cls.getCode().toString();
System.out.println(code);
assertThat(code, containsString("i < a.length"));
assertThat(code, containsString("long i_2 ="));
assertThat(code, containsString("+ i_2"));
assertThat(code, containsString("i_2--;"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册