diff options
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/internal/SourceInfo.scala | 16 | ||||
| -rw-r--r-- | src/main/scala/chisel3/internal/firrtl/Emitter.scala | 5 |
2 files changed, 14 insertions, 7 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/SourceInfo.scala b/chiselFrontend/src/main/scala/chisel3/internal/SourceInfo.scala index 5e3bf33e..f1130db4 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/SourceInfo.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/SourceInfo.scala @@ -19,9 +19,17 @@ import scala.reflect.macros.blackbox.Context /** Abstract base class for generalized source information. */ -sealed trait SourceInfo +sealed trait SourceInfo { + /** A prettier toString + * + * Make a useful message if SourceInfo is available, nothing otherwise + */ + def makeMessage(f: String => String): String +} -sealed trait NoSourceInfo extends SourceInfo +sealed trait NoSourceInfo extends SourceInfo { + def makeMessage(f: String => String): String = "" +} /** For when source info can't be generated because of a technical limitation, like for Reg because * Scala macros don't support named or default arguments. @@ -34,7 +42,9 @@ case object DeprecatedSourceInfo extends NoSourceInfo /** For FIRRTL lines from a Scala source line. */ -case class SourceLine(filename: String, line: Int, col: Int) extends SourceInfo +case class SourceLine(filename: String, line: Int, col: Int) extends SourceInfo { + def makeMessage(f: String => String): String = f(s"@[$filename $line:$col]") +} /** Provides a macro that returns the source information at the invocation point. */ diff --git a/src/main/scala/chisel3/internal/firrtl/Emitter.scala b/src/main/scala/chisel3/internal/firrtl/Emitter.scala index 0793fd7d..3fb18893 100644 --- a/src/main/scala/chisel3/internal/firrtl/Emitter.scala +++ b/src/main/scala/chisel3/internal/firrtl/Emitter.scala @@ -39,10 +39,7 @@ private class Emitter(circuit: Circuit) { unindent() s"skip" } - e.sourceInfo match { - case SourceLine(filename, line, col) => s"${firrtlLine} @[${filename} ${line}:${col}]" - case _: NoSourceInfo => firrtlLine - } + firrtlLine + e.sourceInfo.makeMessage(" " + _) } // Map of Module FIRRTL definition to FIRRTL name, if it has been emitted already. |
