fix: hide first argument instead remove for constructor in inner class

This commit is contained in:
Skylot
2019-03-02 16:02:17 +03:00
parent cbdc2496fc
commit 653bb2ac10
5 changed files with 6 additions and 9 deletions
@@ -262,6 +262,7 @@ public class ClassGen {
code.newLine().addMultiLine(Utils.getStackTrace(e));
code.newLine().add("*/");
code.setIndent(savedIndent);
mth.addError("Method generation error: " + e.getMessage(), e);
}
}
}
@@ -116,6 +116,8 @@ public class MethodGen {
} else {
mth.addComment("JADX WARN: Incorrect number of args for enum constructor: " + args.size() + " (expected >= 2)");
}
} else if (mth.contains(AFlag.SKIP_FIRST_ARG)) {
args = args.subList(1, args.size());
}
addMethodArguments(code, args);
code.add(')');
@@ -82,12 +82,7 @@ public class SSAVar extends AttrNode {
}
public void removeUse(RegisterArg arg) {
for (int i = 0, useListSize = useList.size(); i < useListSize; i++) {
if (useList.get(i) == arg) {
useList.remove(i);
break;
}
}
useList.removeIf(registerArg -> registerArg == arg);
}
public void setUsedInPhi(@Nullable PhiInsn usedInPhi) {
@@ -248,9 +248,8 @@ public class MethodNode extends LineAttrNode implements ILoadable, ICodeNode {
return argsList;
}
public RegisterArg removeFirstArgument() {
public void skipFirstArgument() {
this.add(AFlag.SKIP_FIRST_ARG);
return argsList.remove(0);
}
@Nullable
@@ -120,7 +120,7 @@ public class ClassModifier extends AbstractVisitor {
if (!fieldInfo.equals(field.getFieldInfo()) || !putInsn.getArg(0).equals(arg)) {
return false;
}
mth.removeFirstArgument();
mth.skipFirstArgument();
InstructionRemover.remove(mth, block, insn);
// other arg usage -> wrap with IGET insn
if (arg.getSVar().getUseCount() != 0) {