From f23ff3abba8663a0e7f64f79b556efd36cc86a83 Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Thu, 29 Sep 2016 17:10:45 +0200 Subject: Improve positions for MemberDefs using `namePos` --- .../tools/dotc/reporting/UniqueMessagePositions.scala | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/dotty/tools/dotc/reporting/UniqueMessagePositions.scala') 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 } } } -- cgit v1.2.3