aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJack Koenig2017-11-09 23:33:10 -0800
committerJack Koenig2017-12-12 15:20:43 -0800
commit7cc075438aa8b67fb52f0556ac9a5bc07bcca232 (patch)
tree6247840de45eae9c1e272a7ec1e79c885897aafc /src
parent2ad8cded49d5a963a84ca22808b271607f1b0ba3 (diff)
Improve MultiInfo emission, add apply that squashes NoInfo
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/ir/IR.scala17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/ir/IR.scala b/src/main/scala/firrtl/ir/IR.scala
index 090ad8ec..a3ad4231 100644
--- a/src/main/scala/firrtl/ir/IR.scala
+++ b/src/main/scala/firrtl/ir/IR.scala
@@ -29,10 +29,23 @@ case class MultiInfo(infos: Seq[Info]) extends Info {
case MultiInfo(seq) => seq flatMap collectStringLits
case NoInfo => Seq.empty
}
- override def toString: String =
- collectStringLits(this).map(_.serialize).mkString(" @[", " ", "]")
+ override def toString: String = {
+ val parts = collectStringLits(this)
+ if (parts.nonEmpty) parts.map(_.serialize).mkString(" @[", " ", "]")
+ else ""
+ }
def ++(that: Info): Info = MultiInfo(Seq(this, that))
}
+object MultiInfo {
+ def apply(infos: Info*) = {
+ val infosx = infos.filterNot(_ == NoInfo)
+ infosx.size match {
+ case 0 => NoInfo
+ case 1 => infosx.head
+ case _ => new MultiInfo(infosx)
+ }
+ }
+}
trait HasName {
val name: String