From 850df18d7c47cf574912075076328a01ef7ed5be Mon Sep 17 00:00:00 2001 From: Skylot Date: Fri, 5 Jul 2019 20:55:00 +0300 Subject: [PATCH] refactor: update duplicate methods in InsnArg classes --- .../jadx/core/dex/instructions/args/FieldArg.java | 5 +++++ .../jadx/core/dex/instructions/args/InsnArg.java | 2 +- .../core/dex/instructions/args/LiteralArg.java | 7 +++++++ .../jadx/core/dex/instructions/args/NamedArg.java | 15 ++++++++++----- .../core/dex/instructions/args/RegisterArg.java | 3 +-- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java index 88afdf352..6a6b13016 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java @@ -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) { diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java index dd91473de..d5124a161 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java @@ -159,7 +159,7 @@ public abstract class InsnArg extends Typed { return contains(AFlag.THIS); } - protected InsnArg copyCommonParams(InsnArg copy) { + protected final T copyCommonParams(T copy) { copy.copyAttributesFrom(this); copy.setParentInsn(parentInsn); return copy; diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java index 156b7582f..40a901215 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java @@ -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(); diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/NamedArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/NamedArg.java index 640f43ecd..9197ceb30 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/NamedArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/NamedArg.java @@ -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 + ')'; diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java index 1e2c307d6..3295987a5 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java @@ -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