From 658bc3c447a78dc1e156036710aa3b0f79ddef1b Mon Sep 17 00:00:00 2001 From: mihaylov Date: Tue, 6 Feb 2007 17:08:03 +0000 Subject: Added a reference to Settings in AbstractReporter --- src/compiler/scala/tools/ant/Scalac.scala | 4 +- src/compiler/scala/tools/ant/Scaladoc.scala | 2 +- src/compiler/scala/tools/nsc/CompileServer.scala | 12 +++-- src/compiler/scala/tools/nsc/Global.scala | 4 +- src/compiler/scala/tools/nsc/Interpreter.scala | 4 +- src/compiler/scala/tools/nsc/Main.scala | 6 +-- src/compiler/scala/tools/nsc/MainTokenMetric.scala | 2 +- src/compiler/scala/tools/nsc/ScriptRunner.scala | 2 +- .../tools/nsc/reporters/AbstractReporter.scala | 56 +++++++++++----------- .../tools/nsc/reporters/ConsoleReporter.scala | 5 +- 10 files changed, 50 insertions(+), 47 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/ant/Scalac.scala b/src/compiler/scala/tools/ant/Scalac.scala index 61afdeb081..c7ebae6d26 100644 --- a/src/compiler/scala/tools/ant/Scalac.scala +++ b/src/compiler/scala/tools/ant/Scalac.scala @@ -605,8 +605,8 @@ class Scalac extends MatchingTask { /** Performs the compilation. */ override def execute() = { - val reporter = new ConsoleReporter() - val Pair(settings, sourceFiles) = initialize + val {settings, sourceFiles} = initialize + val reporter = new ConsoleReporter(settings) // Compiles the actual code val compiler = new Global(settings, reporter) diff --git a/src/compiler/scala/tools/ant/Scaladoc.scala b/src/compiler/scala/tools/ant/Scaladoc.scala index caa46a6963..92d313839b 100644 --- a/src/compiler/scala/tools/ant/Scaladoc.scala +++ b/src/compiler/scala/tools/ant/Scaladoc.scala @@ -415,8 +415,8 @@ package scala.tools.ant { // Builds-up the compilation settings for Scalac with the existing Ant // parameters. - val reporter = new ConsoleReporter() val settings = new Settings(error) + val reporter = new ConsoleReporter(settings) settings.doc.value = true settings.outdir.value = asString(destination.get) if (!classpath.isEmpty) diff --git a/src/compiler/scala/tools/nsc/CompileServer.scala b/src/compiler/scala/tools/nsc/CompileServer.scala index bc99bf321f..24d4b17bd9 100644 --- a/src/compiler/scala/tools/nsc/CompileServer.scala +++ b/src/compiler/scala/tools/nsc/CompileServer.scala @@ -65,6 +65,8 @@ object CompileServer extends SocketServer { private val runtime = Runtime.getRuntime() + var reporter: ConsoleReporter = _ + def session(): unit = { System.out.println("New session" + ", total memory = "+ runtime.totalMemory() + @@ -88,10 +90,6 @@ object CompileServer extends SocketServer { compiler = null return } - val reporter = new ConsoleReporter(in, out) { - // disable prompts, so that compile server cannot block - override def displayPrompt = {} - } def error(msg: String): unit = reporter.error(/*new Position*/ FakePos("fsc"), msg + "\n fsc -help gives more information") @@ -106,7 +104,11 @@ object CompileServer extends SocketServer { new settings.BooleanSetting("-J", "Pass directly to runtime system") } - reporter.prompt = command.settings.prompt.value + reporter = new ConsoleReporter(command.settings, in, out) { + // disable prompts, so that compile server cannot block + override def displayPrompt = {} + } + if (command.settings.version.value) reporter.info(null, versionMsg, true) else if (command.settings.help.value) diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala index 29ab8b6183..ce01994aab 100644 --- a/src/compiler/scala/tools/nsc/Global.scala +++ b/src/compiler/scala/tools/nsc/Global.scala @@ -42,9 +42,9 @@ class Global(var settings: Settings, var reporter: Reporter) extends SymbolTable reporter) def this(settings: Settings) = - this(settings, new ConsoleReporter) + this(settings, new ConsoleReporter(settings)) - def this() = this(new Settings, new ConsoleReporter) + //def this() = this(new Settings, new ConsoleReporter) // sub-components -------------------------------------------------- object treePrinters extends TreePrinters { diff --git a/src/compiler/scala/tools/nsc/Interpreter.scala b/src/compiler/scala/tools/nsc/Interpreter.scala index d1615d2700..119b68e5d3 100644 --- a/src/compiler/scala/tools/nsc/Interpreter.scala +++ b/src/compiler/scala/tools/nsc/Interpreter.scala @@ -68,12 +68,12 @@ class Interpreter(val settings: Settings, reporter: Reporter, out: PrintWriter) /** construct an interpreter that reports to Console */ def this(settings: Settings) = this(settings, - new ConsoleReporter, + new ConsoleReporter(settings), new PrintWriter(new ConsoleWriter, true)) /** construct an interpreter that uses the specified in and out streams */ def this(settings: Settings, out: PrintWriter) = - this(settings, new ConsoleReporter(null, out), out) + this(settings, new ConsoleReporter(settings, null, out), out) /** whether to print out result lines */ private var printResults: Boolean = true diff --git a/src/compiler/scala/tools/nsc/Main.scala b/src/compiler/scala/tools/nsc/Main.scala index c5453fc167..5c4c52e2f3 100644 --- a/src/compiler/scala/tools/nsc/Main.scala +++ b/src/compiler/scala/tools/nsc/Main.scala @@ -38,10 +38,8 @@ object Main extends AnyRef with EvalLoop { } def process(args: Array[String]): unit = { - reporter = new ConsoleReporter(); - val command = new CompilerCommand(List.fromArray(args), error, false); - reporter.prompt = command.settings.prompt.value - reporter.nowarn = command.settings.nowarnings.value + val command = new CompilerCommand(List.fromArray(args), error, false) + reporter = new ConsoleReporter(command.settings) if (command.settings.version.value) reporter.info(null, versionMsg, true) else if (command.settings.help.value) diff --git a/src/compiler/scala/tools/nsc/MainTokenMetric.scala b/src/compiler/scala/tools/nsc/MainTokenMetric.scala index f0eb7ad71b..798f43140b 100644 --- a/src/compiler/scala/tools/nsc/MainTokenMetric.scala +++ b/src/compiler/scala/tools/nsc/MainTokenMetric.scala @@ -42,7 +42,7 @@ object MainTokenMetric { def process(args: Array[String]): unit = { val command = new CompilerCommand(List.fromArray(args), error, false) - reporter = new ConsoleReporter() + reporter = new ConsoleReporter(command.settings) try { val compiler = new Global(command.settings, reporter) tokenMetric(compiler, command.files) diff --git a/src/compiler/scala/tools/nsc/ScriptRunner.scala b/src/compiler/scala/tools/nsc/ScriptRunner.scala index 50203f4491..e541cfc906 100644 --- a/src/compiler/scala/tools/nsc/ScriptRunner.scala +++ b/src/compiler/scala/tools/nsc/ScriptRunner.scala @@ -235,7 +235,7 @@ object ScriptRunner { settings.outdir.value = compiledPath.getPath if (settings.nocompdaemon.value) { - val reporter = new ConsoleReporter + val reporter = new ConsoleReporter(settings) val compiler = new Global(settings, reporter) val cr = new compiler.Run cr.compileSources(List(wrappedScript(scriptFile, &compiler.getSourceFile))) diff --git a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala index 3e3d07cb92..734b1527ed 100644 --- a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala +++ b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala @@ -6,9 +6,11 @@ // $Id$ -package scala.tools.nsc.reporters; -import scala.collection.mutable.HashSet; -import scala.tools.nsc.util.Position; +package scala.tools.nsc.reporters + +import scala.collection.mutable.HashSet +import nsc.util.Position +import nsc.Settings /** * This reporter implements filtering. @@ -16,38 +18,38 @@ import scala.tools.nsc.util.Position; abstract class AbstractReporter extends Reporter { private val positions = new HashSet[Position](); - def display(pos : Position, msg : String, severity : Severity) : Unit; - var prompt : Boolean = false; - var verbose : Boolean = false; - var nowarn : Boolean = false; - def displayPrompt : Unit; - - protected def info0(pos : Position, msg : String, severity : Severity, force : Boolean) : Unit = severity match { - case INFO => if (force || verbose) display(pos, msg, severity); - case WARNING => { - val hidden = testAndLog(pos); - if (!nowarn) { - if (!hidden || prompt) display(pos, msg, severity); - if (prompt) displayPrompt; + val settings: Settings + + def display(pos : Position, msg : String, severity : Severity) : Unit + def displayPrompt : Unit + + protected def info0(pos : Position, msg : String, severity : Severity, force : Boolean) : Unit = + severity match { + case INFO => if (force || settings.verbose.value) display(pos, msg, severity) + case WARNING => { + val hidden = testAndLog(pos) + if (!settings.nowarnings.value) { + if (!hidden || settings.prompt.value) display(pos, msg, severity) + if (settings.prompt.value) displayPrompt + } + } + case ERROR => { + val hidden = testAndLog(pos); + if (!hidden || settings.prompt.value) display(pos, msg, severity) + if (settings.prompt.value) displayPrompt } } - case ERROR => { - val hidden = testAndLog(pos); - if (!hidden || prompt) display(pos, msg, severity); - if (prompt) displayPrompt; - } - } //######################################################################## // Private Methods /** Logs a position and returns true if it was already logged. */ private def testAndLog(pos : Position) : Boolean = { - if (pos eq null) return false; - if (pos.column == 0) return false; - if (positions.contains(pos)) return true; - positions += (pos); - return false; + if (pos eq null) return false + if (pos.column == 0) return false + if (positions.contains(pos)) return true + positions += (pos) + return false } //######################################################################## diff --git a/src/compiler/scala/tools/nsc/reporters/ConsoleReporter.scala b/src/compiler/scala/tools/nsc/reporters/ConsoleReporter.scala index fe8efc0977..547ec9e214 100644 --- a/src/compiler/scala/tools/nsc/reporters/ConsoleReporter.scala +++ b/src/compiler/scala/tools/nsc/reporters/ConsoleReporter.scala @@ -20,7 +20,7 @@ import java.io.PrintWriter * This class implements a Reporter that displays messages on a text * console. */ -class ConsoleReporter(reader : BufferedReader, writer : PrintWriter) extends AbstractReporter { +class ConsoleReporter(val settings: Settings, reader : BufferedReader, writer : PrintWriter) extends AbstractReporter { //######################################################################## // Public Fields @@ -41,7 +41,8 @@ class ConsoleReporter(reader : BufferedReader, writer : PrintWriter) extends Abs //######################################################################## // Public Constructors - def this() = this(Console.in, new PrintWriter(Console.err, true)) + def this(settings: Settings) = + this(settings, Console.in, new PrintWriter(Console.err, true)) //######################################################################## // Public Methods - Count -- cgit v1.2.3