diff options
| author | Jack Koenig | 2017-11-09 23:33:10 -0800 |
|---|---|---|
| committer | Jack Koenig | 2017-12-12 15:20:43 -0800 |
| commit | 7cc075438aa8b67fb52f0556ac9a5bc07bcca232 (patch) | |
| tree | 6247840de45eae9c1e272a7ec1e79c885897aafc /src | |
| parent | 2ad8cded49d5a963a84ca22808b271607f1b0ba3 (diff) | |
Improve MultiInfo emission, add apply that squashes NoInfo
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/ir/IR.scala | 17 |
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 |
