提交 7b18d3a3 编写于 作者: A Ahmed Ashour 提交者: skylot

fix: ignore not generated insns in CodeShrinker visitor (PR #560)

上级 058e4c9f
......@@ -6,10 +6,12 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
import org.jetbrains.annotations.Nullable;
import com.android.dx.io.instructions.DecodedInstruction;
import com.rits.cloning.Cloner;
import org.jetbrains.annotations.Nullable;
import jadx.core.dex.attributes.AFlag;
import jadx.core.dex.attributes.nodes.LineAttrNode;
import jadx.core.dex.instructions.InsnType;
import jadx.core.dex.instructions.args.ArgType;
......@@ -195,6 +197,12 @@ public class InsnNode extends LineAttrNode {
}
public boolean canReorder() {
if (contains(AFlag.DONT_GENERATE)) {
if (getType() == InsnType.MONITOR_EXIT) {
return false;
}
return true;
}
switch (getType()) {
case CONST:
case CONST_STR:
......
......@@ -6,7 +6,6 @@ import java.io.InputStream;
import org.junit.jupiter.api.Test;
import jadx.NotYetImplemented;
import jadx.core.dex.nodes.ClassNode;
import jadx.tests.api.IntegrationTest;
......@@ -59,14 +58,7 @@ public class TestFinally2 extends IntegrationTest {
String code = cls.getCode().toString();
assertThat(code, containsOne("decode(inputStream);"));
}
@Test
@NotYetImplemented
public void test2() {
ClassNode cls = getClassNode(TestCls.class);
String code = cls.getCode().toString();
assertThat(code, containsOne("return new Result(400);"));
assertThat(code, not(containsOne("result =")));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册