diff options
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/internal')
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/internal/Builder.scala | 2 | ||||
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/internal/Error.scala | 22 |
2 files changed, 14 insertions, 10 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala index c9b37fc5..5c5c690e 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala @@ -257,7 +257,7 @@ private[chisel3] object Builder { def errors: ErrorLog = dynamicContext.errors def error(m: => String): Unit = errors.error(m) def warning(m: => String): Unit = errors.warning(m) - def deprecated(m: => String): Unit = errors.deprecated(m) + def deprecated(m: => String, location: Option[String] = None): Unit = errors.deprecated(m, location) /** Record an exception as an error, and throw it. * diff --git a/chiselFrontend/src/main/scala/chisel3/internal/Error.scala b/chiselFrontend/src/main/scala/chisel3/internal/Error.scala index 6e7e4002..7d209219 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/Error.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/Error.scala @@ -28,8 +28,16 @@ private[chisel3] class ErrorLog { println(new Info("[%2.3f] %s".format(elapsedTime/1e3, m), None)) // scalastyle:ignore regex /** Log a deprecation warning message */ - def deprecated(m: => String): Unit = { - val thisEntry = (m, getUserLineNumber) + def deprecated(m: => String, location: Option[String]): Unit = { + val sourceLoc = location match { + case Some(loc) => loc + case None => getUserLineNumber match { + case Some(elt: StackTraceElement) => s"${elt.getFileName}:${elt.getLineNumber}" + case None => "(unknown)" + } + } + + val thisEntry = (m, sourceLoc) deprecations += ((thisEntry, deprecations.getOrElse(thisEntry, 0) + 1)) } @@ -38,12 +46,8 @@ private[chisel3] class ErrorLog { val depTag = s"[${Console.BLUE}deprecated${Console.RESET}]" val warnTag = s"[${Console.YELLOW}warn${Console.RESET}]" val errTag = s"[${Console.RED}error${Console.RESET}]" - deprecations foreach { case ((message, stackElement), count) => - val line = stackElement match { - case Some(stackElement) => s"$depTag ${stackElement.getFileName}:${stackElement.getLineNumber} ($count calls): $message" - case None => s"$depTag (unknown location) ($count calls): $message" - } - println(line) + deprecations.foreach { case ((message, sourceLoc), count) => + println(s"$depTag $sourceLoc ($count calls): $message") } errors foreach println @@ -99,7 +103,7 @@ private[chisel3] class ErrorLog { } private val errors = ArrayBuffer[LogEntry]() - private val deprecations = LinkedHashMap[(String, Option[StackTraceElement]), Int]() + private val deprecations = LinkedHashMap[(String, String), Int]() private val startTime = System.currentTimeMillis private def elapsedTime: Long = System.currentTimeMillis - startTime |
