summaryrefslogtreecommitdiffstats
path: root/test/800-smali
diff options
context:
space:
mode:
Diffstat (limited to 'test/800-smali')
-rw-r--r--test/800-smali/expected.txt1
-rw-r--r--test/800-smali/smali/b_20224106.smali16
-rw-r--r--test/800-smali/src/Main.java2
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() {