@@ -55,13 +55,17 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
5555 .foreach(_.nn.delete())
5656 end if
5757
58+ // Initialise a coverage object if it does not exist yet
59+ if ctx.base.coverage == null then
60+ ctx.base.coverage = Coverage ()
61+
5862 coverageExcludeClasslikePatterns = ctx.settings.coverageExcludeClasslikes.value.map(_.r.pattern)
5963 coverageExcludeFilePatterns = ctx.settings.coverageExcludeFiles.value.map(_.r.pattern)
6064
61- ctx.base.coverage.removeStatementsFromFile(ctx.compilationUnit.source.file.absolute.jpath)
65+ ctx.base.coverage.nn. removeStatementsFromFile(ctx.compilationUnit.source.file.absolute.jpath)
6266 super .run
6367
64- Serializer .serialize(ctx.base.coverage, outputPath, ctx.settings.sourceroot.value)
68+ Serializer .serialize(ctx.base.coverage.nn , outputPath, ctx.settings.sourceroot.value)
6569
6670 private def isClassIncluded (sym : Symbol )(using Context ): Boolean =
6771 val fqn = sym.fullName.toText(ctx.printerFn(ctx)).show
@@ -105,7 +109,7 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
105109 * @return the statement's id
106110 */
107111 private def recordStatement (tree : Tree , pos : SourcePosition , branch : Boolean )(using ctx : Context ): Int =
108- val id = ctx.base.coverage.nextStatementId()
112+ val id = ctx.base.coverage.nn. nextStatementId()
109113
110114 val sourceFile = pos.source
111115 val statement = Statement (
@@ -121,7 +125,7 @@ class InstrumentCoverage extends MacroTransform with IdentityDenotTransformer:
121125 treeName = tree.getClass.getSimpleName.nn,
122126 branch
123127 )
124- ctx.base.coverage.addStatement(statement)
128+ ctx.base.coverage.nn. addStatement(statement)
125129 id
126130
127131 /**
0 commit comments