refactor: update duplicate methods in InsnArg classes

This commit is contained in:
Skylot
2019-07-05 20:55:00 +03:00
parent 7f4da306c9
commit 850df18d7c
5 changed files with 24 additions and 8 deletions
@@ -58,6 +58,11 @@ public final class FieldArg extends RegisterArg {
throw new JadxRuntimeException("Can't set type for FieldArg");
}
@Override
public RegisterArg duplicate() {
return copyCommonParams(new FieldArg(field, instArg));
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -159,7 +159,7 @@ public abstract class InsnArg extends Typed {
return contains(AFlag.THIS);
}
protected InsnArg copyCommonParams(InsnArg copy) {
protected final <T extends InsnArg> T copyCommonParams(T copy) {
copy.copyAttributesFrom(this);
copy.setParentInsn(parentInsn);
return copy;
@@ -48,6 +48,13 @@ public final class LiteralArg extends InsnArg {
|| type == PrimitiveType.LONG;
}
@Override
public InsnArg duplicate() {
LiteralArg copy = new LiteralArg(literal, getType());
copy.type = type;
return copyCommonParams(copy);
}
@Override
public int hashCode() {
return (int) (literal ^ literal >>> 32) + 31 * getType().hashCode();
@@ -26,6 +26,16 @@ public final class NamedArg extends InsnArg implements Named {
this.name = name;
}
@Override
public InsnArg duplicate() {
return copyCommonParams(new NamedArg(name, type));
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -37,11 +47,6 @@ public final class NamedArg extends InsnArg implements Named {
return name.equals(((NamedArg) o).name);
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public String toString() {
return '(' + name + ' ' + type + ')';
@@ -115,8 +115,7 @@ public class RegisterArg extends InsnArg implements Named {
if (sVar != null) {
dup.setSVar(sVar);
}
dup.copyAttributesFrom(this);
return dup;
return copyCommonParams(dup);
}
@Nullable