@@ -38,9 +38,6 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
38
38
override def isEnabled (using ctx : Context ) =
39
39
ctx.settings.coverageOutputDir.value.nonEmpty
40
40
41
- // stores all instrumented statements
42
- private val coverage = Coverage ()
43
-
44
41
private var coverageExcludeClasslikePatterns : List [Pattern ] = Nil
45
42
private var coverageExcludeFilePatterns : List [Pattern ] = Nil
46
43
@@ -51,7 +48,7 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
51
48
val dataDir = File (outputPath)
52
49
val newlyCreated = dataDir.mkdirs()
53
50
54
- if ! newlyCreated && ! ctx.base.coverageStartedWriting then
51
+ if ! newlyCreated then
55
52
// If the directory existed before, let's clean it up.
56
53
dataDir.listFiles.nn
57
54
.filter(_.nn.getName.nn.startsWith(" scoverage" ))
@@ -61,9 +58,10 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
61
58
coverageExcludeClasslikePatterns = ctx.settings.coverageExcludeClasslikes.value.map(_.r.pattern)
62
59
coverageExcludeFilePatterns = ctx.settings.coverageExcludeFiles.value.map(_.r.pattern)
63
60
61
+ ctx.base.coverage.removeStatementsFromFile(ctx.compilationUnit.source.file.absolute.jpath)
64
62
super .run
65
63
66
- Serializer .serialize(coverage, outputPath, ctx.settings.sourceroot.value)
64
+ Serializer .serialize(ctx.base. coverage, outputPath, ctx.settings.sourceroot.value)
67
65
68
66
private def isClassIncluded (sym : Symbol )(using Context ): Boolean =
69
67
val fqn = sym.fullName.toText(ctx.printerFn(ctx)).show
@@ -107,8 +105,7 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
107
105
* @return the statement's id
108
106
*/
109
107
private def recordStatement (tree : Tree , pos : SourcePosition , branch : Boolean )(using ctx : Context ): Int =
110
- val id = ctx.base.coverageStatementId
111
- ctx.base.coverageStatementId += 1
108
+ val id = ctx.base.coverage.nextStatementId()
112
109
113
110
val sourceFile = pos.source
114
111
val statement = Statement (
@@ -124,7 +121,7 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
124
121
treeName = tree.getClass.getSimpleName.nn,
125
122
branch
126
123
)
127
- coverage.addStatement(statement)
124
+ ctx.base. coverage.addStatement(statement)
128
125
id
129
126
130
127
/**
0 commit comments