diff options
author | Martin Odersky <odersky@gmail.com> | 2008-08-18 14:53:44 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-08-18 14:53:44 +0000 |
commit | aa43994c9648183a81cba2557dc3188ef6ca341e (patch) | |
tree | 4fb2ee654c885db2cc549a7d8ebb1d7c20cdfbdd /src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala | |
parent | 98ba45e4f615bdb6b04694b3e3099cb1029679ba (diff) | |
download | scala-aa43994c9648183a81cba2557dc3188ef6ca341e.tar.gz scala-aa43994c9648183a81cba2557dc3188ef6ca341e.tar.bz2 scala-aa43994c9648183a81cba2557dc3188ef6ca341e.zip |
corrected several problems with error reporting...
corrected several problems with error reporting: positions checked
twice, warnings masking errors. Refined solution of forward implicits
without5 result type.
Diffstat (limited to 'src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala index 53cbbddcc7..a4f682a715 100644 --- a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala +++ b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala @@ -6,7 +6,7 @@ package scala.tools.nsc.reporters -import scala.collection.mutable.HashSet +import scala.collection.mutable.HashMap import scala.tools.nsc.Settings import scala.tools.nsc.util.Position @@ -14,7 +14,7 @@ import scala.tools.nsc.util.Position * This reporter implements filtering. */ abstract class AbstractReporter extends Reporter { - private val positions = new HashSet[Position]() + private val positions = new HashMap[Position, Severity] override def reset = { super.reset @@ -31,13 +31,13 @@ abstract class AbstractReporter extends Reporter { case INFO => if (force || settings.verbose.value) display(pos, msg, severity) case WARNING => - val hidden = testAndLog(pos) + val hidden = testAndLog(pos, severity) if (!settings.nowarnings.value) { if (!hidden || settings.prompt.value) display(pos, msg, severity) if (settings.prompt.value) displayPrompt } case ERROR => - val hidden = testAndLog(pos) + val hidden = testAndLog(pos, severity) if (!hidden || settings.prompt.value) display(pos, msg, severity) if (settings.prompt.value) displayPrompt } @@ -48,11 +48,11 @@ abstract class AbstractReporter extends Reporter { * @param pos ... * @return <code>true</code> if <code>pos</code> was already logged. */ - private def testAndLog(pos: Position): Boolean = { + private def testAndLog(pos: Position, severity: Severity): Boolean = { if (pos eq null) return false if (pos.offset.isEmpty) return false - if (positions contains pos) return true - positions += pos + if ((positions contains pos) && positions(pos) >= severity) return true + positions += (pos -> severity) false } |