aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core.test/src
diff options
context:
space:
mode:
authorEvgeny Mandrikov <Godin@users.noreply.github.com>2017-10-07 06:43:07 +0200
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2017-10-07 06:43:07 +0200
commite094d69351c60358d81e7824bdd2947fa21875f6 (patch)
tree4a30e3c9caa6b74c7313140680eba321f5da45e1 /org.jacoco.core.test/src
parentac25a3f5a9b40fdc95a6bdd830e2282146720313 (diff)
downloadjacoco-e094d69351c60358d81e7824bdd2947fa21875f6.tar.gz
Add test of ASM bug 317793 (#606)
Diffstat (limited to 'org.jacoco.core.test/src')
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/internal/flow/FrameSnapshotTest.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/flow/FrameSnapshotTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/flow/FrameSnapshotTest.java
index 3aefe72f..57417296 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/internal/flow/FrameSnapshotTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/internal/flow/FrameSnapshotTest.java
@@ -93,6 +93,25 @@ public class FrameSnapshotTest {
expectedVisitor.visitFrame(Opcodes.F_FULL, 1, arr("Foo"), 2, stack);
}
+ /**
+ * Test of <a href="https://gitlab.ow2.org/asm/asm/issues/317793">ASM
+ * bug</a>: according to <a href=
+ * "https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.10.1.9.aaload">JVMS
+ * "4.10.1.9 Type Checking Instructions, AALOAD"</a> resulting type on the
+ * operand stack should be null if the input array is null.
+ */
+ @Test
+ public void after_aaload_stack_should_contain_null_when_input_array_is_null() {
+ analyzer.visitInsn(Opcodes.ACONST_NULL);
+ analyzer.visitInsn(Opcodes.ICONST_0);
+ analyzer.visitInsn(Opcodes.AALOAD);
+ frame = FrameSnapshot.create(analyzer, 0);
+
+ // FIXME should be Opcodes.NULL after update of ASM to 6.0
+ final Object[] stack = arr("java/lang/Object");
+ expectedVisitor.visitFrame(Opcodes.F_FULL, 1, arr("Foo"), 1, stack);
+ }
+
private Object[] arr(Object... elements) {
return elements;
}