diff options
author | Sean McDirmid <sean.mcdirmid@gmail.com> | 2005-11-14 16:58:22 +0000 |
---|---|---|
committer | Sean McDirmid <sean.mcdirmid@gmail.com> | 2005-11-14 16:58:22 +0000 |
commit | d11a5ec080a8fd0890047a0f7d91b938bc7bf1b6 (patch) | |
tree | cb67756886c8568b701f509acab69d559fc833ea /sources/scala/tools/nsc/reporters/AbstractReporter.scala | |
parent | c3a4c7ee6edf7bb442b5beb2d1c97c76b29562d3 (diff) | |
download | scala-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.scala | 56 |
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; + } + + //######################################################################## +} |