aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Mandrikov <138671+Godin@users.noreply.github.com>2019-03-16 23:46:38 +0100
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2019-03-16 23:46:38 +0100
commit1db0792e87fa1e0549523c50e9d40a8e257cf74e (patch)
tree4352fc5c14a7ac079e5b33f5e8432a77ccd70a9d
parent795c8f9e3b2e7e7abe3f4342bbd4a1dd31530325 (diff)
downloadplatform_external_jacoco-1db0792e87fa1e0549523c50e9d40a8e257cf74e.tar.gz
platform_external_jacoco-1db0792e87fa1e0549523c50e9d40a8e257cf74e.tar.bz2
platform_external_jacoco-1db0792e87fa1e0549523c50e9d40a8e257cf74e.zip
module-info.class should be excluded from analysis (#859)
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java14
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java3
-rw-r--r--org.jacoco.doc/docroot/doc/changes.html4
3 files changed, 21 insertions, 0 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java b/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java
index 6f8fee9c..1e95a5d1 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java
@@ -77,6 +77,20 @@ public class AnalyzerTest {
}
@Test
+ public void should_ignore_module_info() throws Exception {
+ final ClassWriter cw = new ClassWriter(0);
+ cw.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null,
+ null);
+ cw.visitModule("module", 0, null).visitEnd();
+ cw.visitEnd();
+ final byte[] bytes = cw.toByteArray();
+
+ analyzer.analyzeClass(bytes, "");
+
+ assertTrue(classes.isEmpty());
+ }
+
+ @Test
public void should_ignore_synthetic_classes() throws Exception {
final ClassWriter cw = new ClassWriter(0);
cw.visit(Opcodes.V1_5, Opcodes.ACC_SYNTHETIC, "Foo", null,
diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java b/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
index b46f1bbc..76b7be3c 100644
--- a/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
+++ b/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
@@ -104,6 +104,9 @@ public class Analyzer {
private void analyzeClass(final byte[] source) {
final long classId = CRC64.classId(source);
final ClassReader reader = InstrSupport.classReaderFor(source);
+ if ((reader.getAccess() & Opcodes.ACC_MODULE) != 0) {
+ return;
+ }
if ((reader.getAccess() & Opcodes.ACC_SYNTHETIC) != 0) {
return;
}
diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html
index 71faf94f..fa81f09d 100644
--- a/org.jacoco.doc/docroot/doc/changes.html
+++ b/org.jacoco.doc/docroot/doc/changes.html
@@ -35,6 +35,10 @@
<li>Fixed incorrect update of frames caused by bug in ASM library in case of
arrays with more than 7 dimensions
(GitHub <a href="https://github.com/jacoco/jacoco/issues/839">#839</a>).</li>
+ <li>Fixed regression, which was introduced in 0.8.3 -
+ <code>module-info.class</code> should be excluded from analysis to not cause
+ <code>IllegalStateException</code>
+ (GitHub <a href="https://github.com/jacoco/jacoco/issues/859">#859</a>).</li>
</ul>
<h3>API Changes</h3>