summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/reporters/AbstractReporter.scala
diff options
context:
space:
mode:
authorSean McDirmid <sean.mcdirmid@gmail.com>2005-11-14 16:58:22 +0000
committerSean McDirmid <sean.mcdirmid@gmail.com>2005-11-14 16:58:22 +0000
commitd11a5ec080a8fd0890047a0f7d91b938bc7bf1b6 (patch)
treecb67756886c8568b701f509acab69d559fc833ea /sources/scala/tools/nsc/reporters/AbstractReporter.scala
parentc3a4c7ee6edf7bb442b5beb2d1c97c76b29562d3 (diff)
downloadscala-d11a5ec080a8fd0890047a0f7d91b938bc7bf1b6.tar.gz
scala-d11a5ec080a8fd0890047a0f7d91b938bc7bf1b6.tar.bz2
scala-d11a5ec080a8fd0890047a0f7d91b938bc7bf1b6.zip
Updated NSC to use offsets instead of line/colu...
Updated NSC to use offsets instead of line/column positions.
Diffstat (limited to 'sources/scala/tools/nsc/reporters/AbstractReporter.scala')
-rw-r--r--sources/scala/tools/nsc/reporters/AbstractReporter.scala56
1 files changed, 56 insertions, 0 deletions
diff --git a/sources/scala/tools/nsc/reporters/AbstractReporter.scala b/sources/scala/tools/nsc/reporters/AbstractReporter.scala
new file mode 100644
index 0000000000..b85fde78ca
--- /dev/null
+++ b/sources/scala/tools/nsc/reporters/AbstractReporter.scala
@@ -0,0 +1,56 @@
+/* ____ ____ ____ ____ ______ *\
+** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
+** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
+** /_____/\____/\___/\____/____/ **
+\* */
+
+// $Id$
+
+package scala.tools.nsc.reporters;
+import java.util.HashSet;
+import scala.tools.nsc.util.Position;
+
+/**
+ * This abstract class implements most aspects of a Reporter, only how
+ * things are displayed has to be implemented in subclasses.
+ */
+abstract class AbstractReporter extends Reporter {
+ private val positions = new HashSet();
+
+ def displayInfo (pos : Position, msg : String) : Unit;
+ def displayWarning(pos : Position, msg : String) : Unit;
+ def displayError (pos : Position, msg : String) : Unit;
+ def displayPrompt : Unit;
+
+ // XXX: while is pos ignored?
+ def info(pos : Position, msg : String, force : Boolean) : Unit =
+ if (force || verbose) displayInfo(pos, msg);
+
+ def warning(pos : Position, msg : String) : Unit = {
+ val hidden = testAndLog(pos);
+ if (nowarn) return;
+ if (!hidden || prompt) displayWarning(pos, msg);
+ if (!hidden) warningsx = warningsx + 1;
+ if (prompt) displayPrompt;
+ }
+ def error(pos : Position, msg : String) : Unit = {
+ val hidden = testAndLog(pos);
+ if (!hidden || prompt) displayError(pos, msg);
+ if (!hidden) errorsx = errorsx + 1;
+ if (prompt) displayPrompt;
+ }
+
+ //########################################################################
+ // Private Methods
+
+ /** Logs a position and returns true if it was already logged. */
+ private def testAndLog(pos : Position) : Boolean = {
+ if (pos == null) return false;
+ if (pos.column == 0) return false;
+ if (positions.contains(pos)) return true;
+ positions.add(pos);
+ return false;
+ }
+
+ //########################################################################
+}