aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvsalvis <salvisbergvera@gmail.com>2015-06-24 16:14:59 +0200
committervsalvis <salvisbergvera@gmail.com>2015-06-24 16:14:59 +0200
commit919f5b2e5c5a091326a0693db49ac30ca1e6bf0f (patch)
treebdea3c75630cac92f08917bcdc4ea6584f8ce78e /src
parent78fae1152a7b381af4639d3d66ed637eac3ca9d0 (diff)
downloaddotty-919f5b2e5c5a091326a0693db49ac30ca1e6bf0f.tar.gz
dotty-919f5b2e5c5a091326a0693db49ac30ca1e6bf0f.tar.bz2
dotty-919f5b2e5c5a091326a0693db49ac30ca1e6bf0f.zip
Partest 1/3: Pass PrintWriter as argument for context creation
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/Bench.scala11
-rw-r--r--src/dotty/tools/dotc/Compiler.scala10
-rw-r--r--src/dotty/tools/dotc/Driver.scala9
-rw-r--r--src/dotty/tools/dotc/FromTasty.scala3
-rw-r--r--src/dotty/tools/dotc/Main.scala4
5 files changed, 20 insertions, 17 deletions
diff --git a/src/dotty/tools/dotc/Bench.scala b/src/dotty/tools/dotc/Bench.scala
index 2e0e15e83..6abad7e85 100644
--- a/src/dotty/tools/dotc/Bench.scala
+++ b/src/dotty/tools/dotc/Bench.scala
@@ -29,14 +29,15 @@ object Bench extends Driver {
private def ntimes(n: Int)(op: => Reporter): Reporter =
(emptyReporter /: (0 until n)) ((_, _) => op)
- override def doCompile(compiler: Compiler, fileNames: List[String])(implicit ctx: Context): Reporter =
+ override def doCompile(compiler: Compiler, fileNames: List[String], reporter: Option[Reporter] = None)
+ (implicit ctx: Context): Reporter =
if (new config.Settings.Setting.SettingDecorator[Boolean](ctx.base.settings.resident).value(ctx))
resident(compiler)
else
ntimes(numRuns) {
val start = System.nanoTime()
- val r = super.doCompile(compiler, fileNames)
- println(s"time elapsed: ${(System.nanoTime - start) / 1000000}ms")
+ val r = super.doCompile(compiler, fileNames, reporter)
+ ctx.println(s"time elapsed: ${(System.nanoTime - start) / 1000000}ms")
r
}
@@ -46,11 +47,11 @@ object Bench extends Driver {
else (args(pos + 1).toInt, (args take pos) ++ (args drop (pos + 2)))
}
- override def process(args: Array[String], rootCtx: Context): Reporter = {
+ override def process(args: Array[String], rootCtx: Context, reporter: Option[Reporter] = None): Reporter = {
val (numCompilers, args1) = extractNumArg(args, "#compilers")
val (numRuns, args2) = extractNumArg(args1, "#runs")
this.numRuns = numRuns
- ntimes(numCompilers)(super.process(args2, rootCtx))
+ ntimes(numCompilers)(super.process(args2, rootCtx, reporter))
}
}
diff --git a/src/dotty/tools/dotc/Compiler.scala b/src/dotty/tools/dotc/Compiler.scala
index 386f976cf..94be0342b 100644
--- a/src/dotty/tools/dotc/Compiler.scala
+++ b/src/dotty/tools/dotc/Compiler.scala
@@ -7,7 +7,7 @@ import Periods._
import Symbols._
import Scopes._
import typer.{FrontEnd, Typer, Mode, ImportInfo, RefChecks}
-import reporting.ConsoleReporter
+import reporting.{ConsoleReporter, Reporter}
import Phases.Phase
import dotty.tools.dotc.transform._
import dotty.tools.dotc.transform.TreeTransforms.{TreeTransform, TreeTransformer}
@@ -93,7 +93,7 @@ class Compiler {
* for type checking.
* imports For each element of RootImports, an import context
*/
- def rootContext(implicit ctx: Context): Context = {
+ def rootContext(implicit ctx: Context, r: Option[Reporter] = None): Context = {
ctx.definitions.init(ctx)
ctx.setPhasePlan(phases)
val rootScope = new MutableScope
@@ -105,7 +105,7 @@ class Compiler {
.setOwner(defn.RootClass)
.setTyper(new Typer)
.setMode(Mode.ImplicitsEnabled)
- .setTyperState(new MutableTyperState(ctx.typerState, new ConsoleReporter()(ctx), isCommittable = true))
+ .setTyperState(new MutableTyperState(ctx.typerState, r.getOrElse(new ConsoleReporter()(ctx)), isCommittable = true))
ctx.definitions.init(start) // set context of definitions to start
def addImport(ctx: Context, symf: () => Symbol) =
ctx.fresh.setImportInfo(ImportInfo.rootImport(symf)(ctx))
@@ -117,8 +117,8 @@ class Compiler {
ctx.runInfo.clear()
}
- def newRun(implicit ctx: Context): Run = {
+ def newRun(implicit ctx: Context, r: Option[Reporter] = None): Run = {
reset()
- new Run(this)(rootContext)
+ new Run(this)(rootContext(ctx, r))
}
}
diff --git a/src/dotty/tools/dotc/Driver.scala b/src/dotty/tools/dotc/Driver.scala
index dc1431aca..f5e41cbef 100644
--- a/src/dotty/tools/dotc/Driver.scala
+++ b/src/dotty/tools/dotc/Driver.scala
@@ -14,21 +14,22 @@ abstract class Driver extends DotClass {
protected def emptyReporter: Reporter = new StoreReporter
- protected def doCompile(compiler: Compiler, fileNames: List[String])(implicit ctx: Context): Reporter =
+ protected def doCompile(compiler: Compiler, fileNames: List[String], reporter: Option[Reporter] = None)
+ (implicit ctx: Context): Reporter =
if (fileNames.nonEmpty) {
- val run = compiler.newRun
+ val run = compiler.newRun(ctx, reporter)
run.compile(fileNames)
run.printSummary()
} else emptyReporter
protected def initCtx = (new ContextBase).initialCtx
- def process(args: Array[String], rootCtx: Context): Reporter = {
+ def process(args: Array[String], rootCtx: Context, reporter: Option[Reporter] = None): Reporter = {
val summary = CompilerCommand.distill(args)(rootCtx)
implicit val ctx: Context = initCtx.fresh.setSettings(summary.sstate)
val fileNames = CompilerCommand.checkUsage(summary)
try {
- doCompile(newCompiler(), fileNames)
+ doCompile(newCompiler(), fileNames, reporter)
} catch {
case ex: FatalError =>
ctx.error(ex.getMessage) // signals that we should fail compilation.
diff --git a/src/dotty/tools/dotc/FromTasty.scala b/src/dotty/tools/dotc/FromTasty.scala
index 019846396..1662d57e7 100644
--- a/src/dotty/tools/dotc/FromTasty.scala
+++ b/src/dotty/tools/dotc/FromTasty.scala
@@ -12,6 +12,7 @@ import SymDenotations._
import typer.FrontEnd
import Phases.Phase
import util._
+import reporting.Reporter
import Decorators._
import dotty.tools.dotc.transform.Pickler
import tasty.DottyUnpickler
@@ -41,7 +42,7 @@ object FromTasty extends Driver {
List(new ReadTastyTreesFromClasses) :: backendPhases
}
- override def newRun(implicit ctx: Context): Run = {
+ override def newRun(implicit ctx: Context, reporter: Option[Reporter] = None): Run = {
reset()
new TASTYRun(this)(rootContext)
}
diff --git a/src/dotty/tools/dotc/Main.scala b/src/dotty/tools/dotc/Main.scala
index 0b136d72f..9aafc83ef 100644
--- a/src/dotty/tools/dotc/Main.scala
+++ b/src/dotty/tools/dotc/Main.scala
@@ -19,10 +19,10 @@ object Main extends Driver {
override def newCompiler(): Compiler = new Compiler
- override def doCompile(compiler: Compiler, fileNames: List[String])(implicit ctx: Context): Reporter = {
+ override def doCompile(compiler: Compiler, fileNames: List[String], reporter: Option[Reporter] = None)(implicit ctx: Context): Reporter = {
if (new config.Settings.Setting.SettingDecorator[Boolean](ctx.base.settings.resident).value(ctx))
resident(compiler)
else
- super.doCompile(compiler, fileNames)
+ super.doCompile(compiler, fileNames, reporter)
}
}