diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-09-29 17:10:45 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-10-10 13:25:36 +0200 |
commit | f23ff3abba8663a0e7f64f79b556efd36cc86a83 (patch) | |
tree | d025c7362cd14bae1ac54b02d399554e3b91c12c /src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala | |
parent | 0781b31fa4e3d22cb6a51882b8d632ea9a16ed6f (diff) | |
download | dotty-f23ff3abba8663a0e7f64f79b556efd36cc86a83.tar.gz dotty-f23ff3abba8663a0e7f64f79b556efd36cc86a83.tar.bz2 dotty-f23ff3abba8663a0e7f64f79b556efd36cc86a83.zip |
Improve positions for MemberDefs using `namePos`
Diffstat (limited to 'src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala')
-rw-r--r-- | src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala b/src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala index c5ff8cb6b..6fd971c2a 100644 --- a/src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala +++ b/src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala @@ -7,10 +7,8 @@ import util.{SourcePosition, SourceFile} import core.Contexts.Context import diagnostic.MessageContainer -/** - * This trait implements `isHidden` so that multiple messages per position - * are suppressed, unless they are of increasing severity. - */ +/** This trait implements `isHidden` so that multiple messages per position + * are suppressed, unless they are of increasing severity. */ trait UniqueMessagePositions extends Reporter { private val positions = new mutable.HashMap[(SourceFile, Int), Int] @@ -21,10 +19,14 @@ trait UniqueMessagePositions extends Reporter { override def isHidden(m: MessageContainer)(implicit ctx: Context): Boolean = super.isHidden(m) || { m.pos.exists && { - positions get (ctx.source, m.pos.point) match { - case Some(level) if level >= m.level => true - case _ => positions((ctx.source, m.pos.point)) = m.level; false + var shouldHide = false + for (pos <- m.pos.start to m.pos.end) { + positions get (ctx.source, pos) match { + case Some(level) if level >= m.level => shouldHide = true + case _ => positions((ctx.source, pos)) = m.level + } } + shouldHide } } } |