aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Mandrikov <Godin@users.noreply.github.com>2017-12-28 20:15:33 +0100
committerGitHub <noreply@github.com>2017-12-28 20:15:33 +0100
commit7f7c246f797fabf8a6e23da22d9c2ae2d8c2a51c (patch)
tree9c4c939791e41ea7d31e2f48efba6a10618e643f
parente050f1948abedc1f298ce2c10392309801039f49 (diff)
downloadjacoco-7f7c246f797fabf8a6e23da22d9c2ae2d8c2a51c.tar.gz
Offline instrumentation should not damage module-info (#634)
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactoryTest.java13
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactory.java7
2 files changed, 17 insertions, 3 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactoryTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactoryTest.java
index a68e4990..2c655a79 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactoryTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactoryTest.java
@@ -211,6 +211,19 @@ public class ProbeArrayStrategyFactoryTest {
true, 0);
}
+ @Test
+ public void testModule() {
+ final ClassWriter writer = new ClassWriter(0);
+ writer.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null,
+ null);
+ writer.visitModule("module", 0, null).visitEnd();
+ writer.visitEnd();
+
+ final IProbeArrayStrategy strategy = ProbeArrayStrategyFactory
+ .createFor(new ClassReader(writer.toByteArray()), generator);
+ assertEquals(NoneProbeArrayStrategy.class, strategy.getClass());
+ }
+
private IProbeArrayStrategy test(int version, int access, boolean clinit,
boolean method, boolean abstractMethod) {
final ClassWriter writer = new ClassWriter(0);
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactory.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactory.java
index a537b815..d5f4d49d 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactory.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeArrayStrategyFactory.java
@@ -45,7 +45,7 @@ public final class ProbeArrayStrategyFactory {
final long classId = CRC64.checksum(reader.b);
final boolean withFrames = version >= Opcodes.V1_6;
- if (isInterface(reader)) {
+ if (isInterfaceOrModule(reader)) {
final ProbeCounter counter = getProbeCounter(reader);
if (counter.getCount() == 0) {
return new NoneProbeArrayStrategy();
@@ -63,8 +63,9 @@ public final class ProbeArrayStrategyFactory {
}
}
- private static boolean isInterface(final ClassReader reader) {
- return (reader.getAccess() & Opcodes.ACC_INTERFACE) != 0;
+ private static boolean isInterfaceOrModule(final ClassReader reader) {
+ return (reader.getAccess()
+ & (Opcodes.ACC_INTERFACE | Opcodes.ACC_MODULE)) != 0;
}
private static int getVersion(final ClassReader reader) {