Skip to content

Commit 0a32b61

Browse files
committed
Use the mime type to detect which Source should report coverage
1 parent 55944ce commit 0a32b61

File tree

2 files changed

+3
-20
lines changed

2 files changed

+3
-20
lines changed

src/main/java/org/truffleruby/parser/TranslatorDriver.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,6 @@ public RubyRootNode parse(RubySource rubySource, ParserContext parserContext, St
250250

251251
// Translate to Ruby Truffle nodes
252252

253-
// Like MRI, do not track coverage of eval's. This also avoids having to merge multiple Sources with the same RubyContext.getPath().
254-
if (!rubySource.isEval()) {
255-
language.coverageManager.loadingSource(source);
256-
}
257-
258253
final BodyTranslator translator = new BodyTranslator(
259254
language,
260255
null,

src/main/java/org/truffleruby/stdlib/CoverageManager.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@
1111

1212
import java.io.PrintStream;
1313
import java.util.Arrays;
14-
import java.util.Collections;
1514
import java.util.HashMap;
1615
import java.util.Map;
17-
import java.util.Set;
1816
import java.util.concurrent.ConcurrentHashMap;
1917
import java.util.concurrent.atomic.AtomicLongArray;
2018

@@ -45,7 +43,6 @@ public static class LineTag extends Tag {
4543
private final Instrumenter instrumenter;
4644
private EventBinding<?> binding;
4745
private final Map<Source, AtomicLongArray> counters = new ConcurrentHashMap<>();
48-
private final Set<Source> coveredSources = Collections.newSetFromMap(new ConcurrentHashMap<>());
4946

5047
private volatile boolean enabled;
5148

@@ -57,21 +54,13 @@ public CoverageManager(LanguageOptions options, Instrumenter instrumenter) {
5754
}
5855
}
5956

60-
public synchronized void loadingSource(Source source) {
61-
if (enabled) {
62-
coveredSources.add(source);
63-
}
64-
}
65-
6657
private int lineToIndex(int line) {
6758
return line - 1;
6859
}
6960

7061
public void setLineHasCode(Source source, int line) {
71-
if (coveredSources.contains(source)) {
72-
final AtomicLongArray counters = getCounters(source);
73-
counters.set(lineToIndex(line), 0);
74-
}
62+
final AtomicLongArray counters = getCounters(source);
63+
counters.set(lineToIndex(line), 0);
7564
}
7665

7766
private boolean getLineHasCode(Source source, int line) {
@@ -88,7 +77,7 @@ public synchronized void enable() {
8877
binding = instrumenter.attachExecutionEventFactory(
8978
SourceSectionFilter
9079
.newBuilder()
91-
.sourceIs(coveredSources::contains)
80+
.mimeTypeIs(RubyLanguage.MIME_TYPE_COVERAGE)
9281
.tagIs(LineTag.class)
9382
.build(),
9483
eventContext -> new ExecutionEventNode() {
@@ -135,7 +124,6 @@ public synchronized void disable() {
135124

136125
binding.dispose();
137126
counters.clear();
138-
coveredSources.clear();
139127

140128
enabled = false;
141129
}

0 commit comments

Comments
 (0)