aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/Driver.scala41
-rw-r--r--src/dotty/tools/dotc/config/CompilerCommand.scala5
2 files changed, 26 insertions, 20 deletions
diff --git a/src/dotty/tools/dotc/Driver.scala b/src/dotty/tools/dotc/Driver.scala
index f5e41cbef..7e9d4a5e4 100644
--- a/src/dotty/tools/dotc/Driver.scala
+++ b/src/dotty/tools/dotc/Driver.scala
@@ -8,33 +8,40 @@ import scala.util.control.NonFatal
abstract class Driver extends DotClass {
- val prompt = "\ndotc>"
+ val prompt = "\ndotc> "
protected def newCompiler(): Compiler
protected def emptyReporter: Reporter = new StoreReporter
- protected def doCompile(compiler: Compiler, fileNames: List[String], reporter: Option[Reporter] = None)
- (implicit ctx: Context): Reporter =
- if (fileNames.nonEmpty) {
- val run = compiler.newRun(ctx, reporter)
- run.compile(fileNames)
- run.printSummary()
- } else emptyReporter
+ protected def doCompile(compiler: Compiler, fileNames: List[String])(implicit ctx: Context): Reporter =
+ if (fileNames.nonEmpty)
+ try {
+ val run = compiler.newRun
+ run.compile(fileNames)
+ run.printSummary()
+ }
+ catch {
+ case ex: FatalError =>
+ ctx.error(ex.getMessage) // signals that we should fail compilation.
+ ctx.typerState.reporter
+ }
+ else emptyReporter
protected def initCtx = (new ContextBase).initialCtx
- def process(args: Array[String], rootCtx: Context, reporter: Option[Reporter] = None): Reporter = {
+ protected def sourcesRequired = true
+
+ def setup(args: Array[String], rootCtx: Context): (List[String], Context) = {
val summary = CompilerCommand.distill(args)(rootCtx)
implicit val ctx: Context = initCtx.fresh.setSettings(summary.sstate)
- val fileNames = CompilerCommand.checkUsage(summary)
- try {
- doCompile(newCompiler(), fileNames, reporter)
- } catch {
- case ex: FatalError =>
- ctx.error(ex.getMessage) // signals that we should fail compilation.
- ctx.typerState.reporter
- }
+ val fileNames = CompilerCommand.checkUsage(summary, sourcesRequired)
+ (fileNames, ctx)
+ }
+
+ def process(args: Array[String], rootCtx: Context): Reporter = {
+ val (fileNames, ctx) = setup(args, rootCtx)
+ doCompile(newCompiler(), fileNames)(ctx)
}
def main(args: Array[String]): Unit =
diff --git a/src/dotty/tools/dotc/config/CompilerCommand.scala b/src/dotty/tools/dotc/config/CompilerCommand.scala
index 3ba8db3ba..e34ca07f9 100644
--- a/src/dotty/tools/dotc/config/CompilerCommand.scala
+++ b/src/dotty/tools/dotc/config/CompilerCommand.scala
@@ -60,7 +60,7 @@ object CompilerCommand extends DotClass {
* are already applied in context.
* @return The list of files to compile.
*/
- def checkUsage(summary: ArgsSummary)(implicit ctx: Context): List[String] = {
+ def checkUsage(summary: ArgsSummary, sourcesRequired: Boolean)(implicit ctx: Context): List[String] = {
val settings = ctx.settings
/** Creates a help message for a subset of options based on cond */
@@ -121,8 +121,7 @@ object CompilerCommand extends DotClass {
ctx.println(infoMessage)
Nil
} else {
- if (summary.arguments.isEmpty && !settings.resident.value)
- ctx.println(usageMessage)
+ if (sourcesRequired && summary.arguments.isEmpty) ctx.println(usageMessage)
summary.arguments
}
}