aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core
diff options
context:
space:
mode:
authorEvgeny Mandrikov <Godin@users.noreply.github.com>2018-12-14 17:56:18 +0100
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2018-12-14 17:56:18 +0100
commit9ad5e6ca90822fc0f99fc2c1600d41d38ec69e47 (patch)
tree762cb8af78a8bfe8576b57002fb269a0a1c10b9e /org.jacoco.core
parent529be6db01c2cc606bb4b4cdc2088cf0df724961 (diff)
downloadjacoco-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.java10
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;
}