forked from skylot/jadx
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: remove enum methods after instructions check (skylot#884)
Showing
4 changed files
with
250 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumObfuscated.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package jadx.tests.integration.enums; | ||
|
||
import org.junit.jupiter.api.Test; | ||
|
||
import jadx.core.dex.nodes.ClassNode; | ||
import jadx.tests.api.SmaliTest; | ||
|
||
import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat; | ||
|
||
public class TestEnumObfuscated extends SmaliTest { | ||
// @formatter:off | ||
/* | ||
public enum TestEnumObfuscated { | ||
private static final synthetic TestEnumObfuscated[] $VLS = {ONE, TWO}; | ||
public static final TestEnumObfuscated ONE = new TestEnumObfuscated("ONE", 0, 1); | ||
public static final TestEnumObfuscated TWO = new TestEnumObfuscated("TWO", 1, 2); | ||
private final int num; | ||
private TestEnumObfuscated(String str, int i, int i2) { | ||
super(str, i); | ||
this.num = i2; | ||
} | ||
public static TestEnumObfuscated vo(String str) { | ||
return (TestEnumObfuscated) Enum.valueOf(TestEnumObfuscated.class, str); | ||
} | ||
public static TestEnumObfuscated[] vs() { | ||
return (TestEnumObfuscated[]) $VLS.clone(); | ||
} | ||
public synthetic int getNum() { | ||
return this.num; | ||
} | ||
} | ||
*/ | ||
// @formatter:on | ||
|
||
@Test | ||
public void test() { | ||
ClassNode cls = getClassNodeFromSmali(); | ||
assertThat(cls) | ||
.code() | ||
.doesNotContain("$VLS") | ||
.doesNotContain("vo(") | ||
.doesNotContain("vs(") | ||
.containsOne("int getNum() {"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
###### Class jadx.tests.integration.enums.TestEnums3$TestCls.Numbers (jadx.tests.integration.enums.TestEnums3$TestCls$Numbers) | ||
.class public final enum Lenums/TestEnumObfuscated; | ||
.super Ljava/lang/Enum; | ||
|
||
# static fields | ||
.field private static final synthetic $VLS:[Lenums/TestEnumObfuscated; | ||
.field public static final enum ONE:Lenums/TestEnumObfuscated; | ||
.field public static final enum TWO:Lenums/TestEnumObfuscated; | ||
|
||
# instance fields | ||
.field private final num:I | ||
|
||
# direct methods | ||
.method static constructor <clinit>()V | ||
.registers 7 | ||
|
||
.prologue | ||
const/4 v6, 0x3 | ||
const/4 v5, 0x0 | ||
const/4 v4, 0x2 | ||
const/4 v3, 0x1 | ||
|
||
new-instance v0, Lenums/TestEnumObfuscated; | ||
const-string v1, "ONE" | ||
invoke-direct {v0, v1, v5, v3}, Lenums/TestEnumObfuscated;-><init>(Ljava/lang/String;II)V | ||
sput-object v0, Lenums/TestEnumObfuscated;->ONE:Lenums/TestEnumObfuscated; | ||
new-instance v0, Lenums/TestEnumObfuscated; | ||
|
||
const-string v1, "TWO" | ||
invoke-direct {v0, v1, v3, v4}, Lenums/TestEnumObfuscated;-><init>(Ljava/lang/String;II)V | ||
sput-object v0, Lenums/TestEnumObfuscated;->TWO:Lenums/TestEnumObfuscated; | ||
const/4 v0, 0x2 | ||
|
||
new-array v0, v0, [Lenums/TestEnumObfuscated; | ||
sget-object v1, Lenums/TestEnumObfuscated;->ONE:Lenums/TestEnumObfuscated; | ||
aput-object v1, v0, v5 | ||
sget-object v1, Lenums/TestEnumObfuscated;->TWO:Lenums/TestEnumObfuscated; | ||
aput-object v1, v0, v3 | ||
sput-object v0, Lenums/TestEnumObfuscated;->$VLS:[Lenums/TestEnumObfuscated; | ||
|
||
return-void | ||
.end method | ||
|
||
.method private constructor <init>(Ljava/lang/String;II)V | ||
.registers 4 | ||
|
||
.prologue | ||
invoke-direct {p0, p1, p2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V | ||
iput p3, p0, Lenums/TestEnumObfuscated;->num:I | ||
return-void | ||
.end method | ||
|
||
.method public static vo(Ljava/lang/String;)Lenums/TestEnumObfuscated; | ||
.registers 2 | ||
|
||
.prologue | ||
const-class v0, Lenums/TestEnumObfuscated; | ||
invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; | ||
move-result-object v0 | ||
check-cast v0, Lenums/TestEnumObfuscated; | ||
return-object v0 | ||
.end method | ||
|
||
.method public static vs()[Lenums/TestEnumObfuscated; | ||
.registers 1 | ||
|
||
.prologue | ||
sget-object v0, Lenums/TestEnumObfuscated;->$VLS:[Lenums/TestEnumObfuscated; | ||
invoke-virtual {v0}, [Lenums/TestEnumObfuscated;->clone()Ljava/lang/Object; | ||
move-result-object v0 | ||
check-cast v0, [Lenums/TestEnumObfuscated; | ||
return-object v0 | ||
.end method | ||
|
||
.method public synthetic getNum()I | ||
.registers 2 | ||
|
||
.prologue | ||
iget v0, p0, Lenums/TestEnumObfuscated;->num:I | ||
return v0 | ||
.end method |