diff --git a/plugin/src/main/scala/scoverage/ScoverageOptions.scala b/plugin/src/main/scala/scoverage/ScoverageOptions.scala index 6519c3a2..6cf2016c 100644 --- a/plugin/src/main/scala/scoverage/ScoverageOptions.scala +++ b/plugin/src/main/scala/scoverage/ScoverageOptions.scala @@ -27,8 +27,8 @@ object ScoverageOptions { "-P:scoverage:excludedPackages:; semicolon separated list of regexs for packages to exclude", "-P:scoverage:excludedFiles:; semicolon separated list of regexs for paths to exclude", "-P:scoverage:excludedSymbols:; semicolon separated list of regexs for symbols to exclude", - "-P:scoverage:extraAfterPhase: phase after which scoverage phase runs (must be after typer phase)", - "-P:scoverage:extraBeforePhase: phase before which scoverage phase runs (must be before patmat phase)", + "-P:scoverage:extraAfterPhase:; phase after which scoverage phase runs (must be after typer phase)", + "-P:scoverage:extraBeforePhase:; phase before which scoverage phase runs (must be before patmat phase)", " Any classes whose fully qualified name matches the regex will", " be excluded from coverage." ).mkString("\n") @@ -72,12 +72,16 @@ object ScoverageOptions { def processPhaseOptions( opts: List[String] - ): (Option[String], Option[String]) = { + ): (Option[List[String]], Option[List[String]]) = { - val afterPhase: Option[String] = - opts.collectFirst { case ExtraAfterPhase(phase) => phase } - val beforePhase: Option[String] = - opts.collectFirst { case ExtraBeforePhase(phase) => phase } + val afterPhase: Option[List[String]] = + opts.collectFirst { case ExtraAfterPhase(phase) => + phase.split(";").toList + } + val beforePhase: Option[List[String]] = + opts.collectFirst { case ExtraBeforePhase(phase) => + phase.split(";").toList + } (afterPhase, beforePhase) } diff --git a/plugin/src/main/scala/scoverage/ScoveragePlugin.scala b/plugin/src/main/scala/scoverage/ScoveragePlugin.scala index 6a144e9c..c7ee1e66 100644 --- a/plugin/src/main/scala/scoverage/ScoveragePlugin.scala +++ b/plugin/src/main/scala/scoverage/ScoveragePlugin.scala @@ -74,8 +74,8 @@ class ScoveragePlugin(val global: Global) extends Plugin { class ScoverageInstrumentationComponent( val global: Global, - extraAfterPhase: Option[String], - extraBeforePhase: Option[String] + extraAfterPhase: Option[List[String]], + extraBeforePhase: Option[List[String]] ) extends PluginComponent with TypingTransformers with Transform { @@ -87,9 +87,9 @@ class ScoverageInstrumentationComponent( override val phaseName: String = ScoveragePlugin.phaseName override val runsAfter: List[String] = - List("typer") ::: extraAfterPhase.toList + List("typer") ::: extraAfterPhase.getOrElse(Nil) override val runsBefore: List[String] = - List("patmat") ::: extraBeforePhase.toList + List("patmat") ::: extraBeforePhase.getOrElse(Nil) /** Our options are not provided at construction time, but shortly after, * so they start as None. diff --git a/plugin/src/test/scala/scoverage/ScoverageOptionsTest.scala b/plugin/src/test/scala/scoverage/ScoverageOptionsTest.scala index 4367a2e4..e7748dcc 100644 --- a/plugin/src/test/scala/scoverage/ScoverageOptionsTest.scala +++ b/plugin/src/test/scala/scoverage/ScoverageOptionsTest.scala @@ -11,8 +11,8 @@ class ScoverageOptionsTest extends FunSuite { "excludedPackages:some.package;another.package*", "excludedFiles:*.proto;iHateThisFile.scala", "excludedSymbols:someSymbol;anotherSymbol;aThirdSymbol", - "extraAfterPhase:extarAfter", - "extraBeforePhase:extraBefore", + "extraAfterPhase:extarAfter;extraAfter2", + "extraBeforePhase:extraBefore;extraBefore2", "reportTestName" )