summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-08-18 14:53:44 +0000
committerMartin Odersky <odersky@gmail.com>2008-08-18 14:53:44 +0000
commitaa43994c9648183a81cba2557dc3188ef6ca341e (patch)
tree4fb2ee654c885db2cc549a7d8ebb1d7c20cdfbdd /src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala
parent98ba45e4f615bdb6b04694b3e3099cb1029679ba (diff)
downloadscala-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.scala14
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
}