diff options
author | Evgeny Mandrikov <Godin@users.noreply.github.com> | 2018-12-14 17:56:18 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2018-12-14 17:56:18 +0100 |
commit | 9ad5e6ca90822fc0f99fc2c1600d41d38ec69e47 (patch) | |
tree | 762cb8af78a8bfe8576b57002fb269a0a1c10b9e /org.jacoco.core | |
parent | 529be6db01c2cc606bb4b4cdc2088cf0df724961 (diff) | |
download | jacoco-9ad5e6ca90822fc0f99fc2c1600d41d38ec69e47.tar.gz |
Fix filtering in case of inlining top level function into class in same file (#798)
Diffstat (limited to 'org.jacoco.core')
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinInlineFilter.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinInlineFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinInlineFilter.java index 4f52dadc..a809e232 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinInlineFilter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinInlineFilter.java @@ -14,6 +14,7 @@ package org.jacoco.core.internal.analysis.filter; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; +import java.util.BitSet; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -70,7 +71,7 @@ public final class KotlinInlineFilter implements IFilter { expectLine(br, "*S Kotlin"); // FileSection expectLine(br, "*F"); - int sourceFileId = -1; + final BitSet sourceFileIds = new BitSet(); String line; while (!"*L".equals(line = br.readLine())) { // AbsoluteFileName @@ -83,9 +84,12 @@ public final class KotlinInlineFilter implements IFilter { } final String fileName = m.group(2); if (fileName.equals(sourceFileName)) { - sourceFileId = Integer.parseInt(m.group(1)); + sourceFileIds.set(Integer.parseInt(m.group(1))); } } + if (sourceFileIds.isEmpty()) { + throw new IllegalStateException("Unexpected SMAP FileSection"); + } // LineSection int min = Integer.MAX_VALUE; while (!"*E".equals(line = br.readLine())) { @@ -98,7 +102,7 @@ public final class KotlinInlineFilter implements IFilter { final int lineFileID = Integer .parseInt(m.group(2).substring(1)); final int outputStartLine = Integer.parseInt(m.group(4)); - if (sourceFileId == lineFileID + if (sourceFileIds.get(lineFileID) && inputStartLine == outputStartLine) { continue; } |