From 430a8afb2cf42e9eef438c7ea38934113de0bbcf Mon Sep 17 00:00:00 2001 From: chick Date: Thu, 24 May 2018 13:34:25 -0700 Subject: Makes ExpandWhens preserve connect Infos * Collects Infos found for symbols * Merges multiple sources for symbol into MultiInfo * Restores these Infos on connect statements. * Add test showing preserved Infos * Changed ++ methods on the Info sub-classes * Ignore NoInfo being added * Fixed way adding was implemented in MultiInfo * Made InfoMap a class which defines the default value function --- src/main/scala/firrtl/ir/IR.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/main/scala/firrtl/ir') diff --git a/src/main/scala/firrtl/ir/IR.scala b/src/main/scala/firrtl/ir/IR.scala index 53fbb765..3887f17d 100644 --- a/src/main/scala/firrtl/ir/IR.scala +++ b/src/main/scala/firrtl/ir/IR.scala @@ -21,7 +21,8 @@ case object NoInfo extends Info { } case class FileInfo(info: StringLit) extends Info { override def toString: String = " @[" + info.serialize + "]" - def ++(that: Info): Info = MultiInfo(Seq(this, that)) + //scalastyle:off method.name + def ++(that: Info): Info = if (that == NoInfo) this else MultiInfo(Seq(this, that)) } case class MultiInfo(infos: Seq[Info]) extends Info { private def collectStringLits(info: Info): Seq[StringLit] = info match { @@ -34,7 +35,8 @@ case class MultiInfo(infos: Seq[Info]) extends Info { if (parts.nonEmpty) parts.map(_.serialize).mkString(" @[", " ", "]") else "" } - def ++(that: Info): Info = MultiInfo(Seq(this, that)) + //scalastyle:off method.name + def ++(that: Info): Info = if (that == NoInfo) this else MultiInfo(infos :+ that) } object MultiInfo { def apply(infos: Info*) = { -- cgit v1.2.3