diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-11-03 17:31:55 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-11-03 17:31:55 +0100 |
commit | 3c595635d4c19b682e0cd5642d56f3b3352eb4db (patch) | |
tree | 35a35ce8ba7f2490689156f6fcbd566279bfe3a9 /src | |
parent | 09d5673de8d3a9ddd50c3c221992ede6117e16bf (diff) | |
download | dotty-3c595635d4c19b682e0cd5642d56f3b3352eb4db.tar.gz dotty-3c595635d4c19b682e0cd5642d56f3b3352eb4db.tar.bz2 dotty-3c595635d4c19b682e0cd5642d56f3b3352eb4db.zip |
Phase.runOn is now List[ComliplationUnit] => List[ComliplationUnit]
Allows to alter number of compilation units.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/Run.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Phases.scala | 8 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/FrontEnd.scala | 3 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/Run.scala b/src/dotty/tools/dotc/Run.scala index a9948c54a..f7d89e897 100644 --- a/src/dotty/tools/dotc/Run.scala +++ b/src/dotty/tools/dotc/Run.scala @@ -46,7 +46,7 @@ class Run(comp: Compiler)(implicit ctx: Context) { .filterNot(ctx.settings.Yskip.value.containsPhase(_)) // TODO: skip only subphase for (phase <- phasesToRun) if (!ctx.reporter.hasErrors) { - phase.runOn(units) + units = phase.runOn(units) def foreachUnit(op: Context => Unit)(implicit ctx: Context): Unit = for (unit <- units) op(ctx.fresh.setPhase(phase.next).setCompilationUnit(unit)) if (ctx.settings.Xprint.value.containsPhase(phase)) diff --git a/src/dotty/tools/dotc/core/Phases.scala b/src/dotty/tools/dotc/core/Phases.scala index 476ce6e55..348789e14 100644 --- a/src/dotty/tools/dotc/core/Phases.scala +++ b/src/dotty/tools/dotc/core/Phases.scala @@ -192,8 +192,12 @@ object Phases { def run(implicit ctx: Context): Unit - def runOn(units: List[CompilationUnit])(implicit ctx: Context): Unit = - for (unit <- units) run(ctx.fresh.setPhase(this).setCompilationUnit(unit)) + def runOn(units: List[CompilationUnit])(implicit ctx: Context): List[CompilationUnit] = + units.map { unit => + val unitCtx = ctx.fresh.setPhase(this).setCompilationUnit(unit) + run(unitCtx) + unitCtx.compilationUnit + } def description: String = phaseName diff --git a/src/dotty/tools/dotc/typer/FrontEnd.scala b/src/dotty/tools/dotc/typer/FrontEnd.scala index 4c5e2549b..4f3b03fa1 100644 --- a/src/dotty/tools/dotc/typer/FrontEnd.scala +++ b/src/dotty/tools/dotc/typer/FrontEnd.scala @@ -40,13 +40,14 @@ class FrontEnd extends Phase { record("retainedTypedTrees", unit.tpdTree.treeSize) } - override def runOn(units: List[CompilationUnit])(implicit ctx: Context): Unit = { + override def runOn(units: List[CompilationUnit])(implicit ctx: Context): List[CompilationUnit] = { val unitContexts = units map (unit => ctx.fresh.setCompilationUnit(unit)) unitContexts foreach (parse(_)) record("parsedTrees", ast.Trees.ntrees) unitContexts foreach (enterSyms(_)) unitContexts foreach (typeCheck(_)) record("totalTrees", ast.Trees.ntrees) + unitContexts.map(_.compilationUnit) } override def run(implicit ctx: Context): Unit = { |