diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/800-smali/expected.txt | 1 | ||||
| -rw-r--r-- | test/800-smali/smali/sameFieldNames.smali | 64 | ||||
| -rw-r--r-- | test/800-smali/src/Main.java | 1 |
3 files changed, 66 insertions, 0 deletions
diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt index f766b0a6cf..1b813bf0c8 100644 --- a/test/800-smali/expected.txt +++ b/test/800-smali/expected.txt @@ -2,4 +2,5 @@ b/17790197 b/17978759 FloatBadArgReg negLong +sameFieldNames Done! diff --git a/test/800-smali/smali/sameFieldNames.smali b/test/800-smali/smali/sameFieldNames.smali new file mode 100644 index 0000000000..107161b538 --- /dev/null +++ b/test/800-smali/smali/sameFieldNames.smali @@ -0,0 +1,64 @@ +.class public LsameFieldNames; +.super Ljava/lang/Object; + +# Test multiple fields with the same name and different types. +# (Invalid in Java language but valid in bytecode.) +.field static public a:D +.field static public a:S +.field static public a:J +.field static public a:F +.field static public a:Z +.field static public a:I +.field static public a:B +.field static public a:C +.field static public a:Ljava/lang/Integer; +.field static public a:Ljava/lang/Long; +.field static public a:Ljava/lang/Float; +.field static public a:Ljava/lang/Double; +.field static public a:Ljava/lang/Boolean; +.field static public a:Ljava/lang/Void; +.field static public a:Ljava/lang/Short; +.field static public a:Ljava/lang/Char; +.field static public a:Ljava/lang/Byte; + +# Add some more fields to stress test the sorting for offset assignment. +.field static public b:C +.field static public c:J +.field static public d:C +.field static public e:B +.field static public f:C +.field static public g:J +.field static public h:C +.field static public i:J +.field static public j:I +.field static public k:J +.field static public l:J +.field static public m:I +.field static public n:J +.field static public o:I +.field static public p:Ljava/lang/Integer; +.field static public q:I +.field static public r:J +.field static public s:I +.field static public t:Ljava/lang/Integer; +.field static public u:I +.field static public v:J +.field static public w:I +.field static public x:Ljava/lang/Integer; +.field static public y:I +.field static public z:Ljava/lang/Integer; + +.method public static getInt()I + .locals 2 + const/4 v0, 2 + sput v0, LsameFieldNames;->a:I + sget-object v1, LsameFieldNames;->a:Ljava/lang/Integer; + const/4 v1, 0 + if-nez v1, :fail + const/4 v0, 7 + :ret + return v0 + :fail + const/4 v0, 0 + goto :ret +.end method diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java index 014edc0fa4..3a0f8eaee6 100644 --- a/test/800-smali/src/Main.java +++ b/test/800-smali/src/Main.java @@ -54,6 +54,7 @@ public class Main { testCases.add(new TestCase("FloatBadArgReg", "FloatBadArgReg", "getInt", new Object[]{100}, null, 100)); testCases.add(new TestCase("negLong", "negLong", "negLong", null, null, 122142L)); + testCases.add(new TestCase("sameFieldNames", "sameFieldNames", "getInt", null, null, 7)); } public void runTests() { |