diff options
Diffstat (limited to 'test/800-smali')
-rw-r--r-- | test/800-smali/expected.txt | 1 | ||||
-rw-r--r-- | test/800-smali/smali/b_20224106.smali | 16 | ||||
-rw-r--r-- | test/800-smali/src/Main.java | 2 |
3 files changed, 19 insertions, 0 deletions
diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt index 5922257..a6b216b 100644 --- a/test/800-smali/expected.txt +++ b/test/800-smali/expected.txt @@ -15,4 +15,5 @@ b/18800943 (2) MoveExc MoveExceptionOnEntry EmptySparseSwitch +b/20224106 Done! diff --git a/test/800-smali/smali/b_20224106.smali b/test/800-smali/smali/b_20224106.smali new file mode 100644 index 0000000..78009db --- /dev/null +++ b/test/800-smali/smali/b_20224106.smali @@ -0,0 +1,16 @@ +.class public LB20224106; + +# Test that a hard + soft verifier failure in invoke-interface does not lead to +# an order abort (the last failure must be hard). + +.super Ljava/lang/Object; + +.method public static run(LB20224106;Ljava/lang/Object;)V + .registers 4 + # Two failure points here: + # 1) There is a parameter type mismatch. The formal type is integral (int), but the actual + # type is reference. + # 2) The receiver is not an interface or Object + invoke-interface {v2, v3}, Ljava/net/DatagramSocket;->checkPort(I)V + return-void +.end method diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java index 3e0b1f9..3e88364 100644 --- a/test/800-smali/src/Main.java +++ b/test/800-smali/src/Main.java @@ -79,6 +79,8 @@ public class Main { "moveExceptionOnEntry", new Object[]{0}, new VerifyError(), null)); testCases.add(new TestCase("EmptySparseSwitch", "EmptySparseSwitch", "run", null, null, null)); + testCases.add(new TestCase("b/20224106", "B20224106", "run", null, new VerifyError(), + 0)); } public void runTests() { |