diff options
| author | Jack Koenig | 2016-09-07 11:24:08 -0700 |
|---|---|---|
| committer | GitHub | 2016-09-07 11:24:08 -0700 |
| commit | 0c6db9ef0669e3fb92fcc0bda2085f934d065f0b (patch) | |
| tree | cfff6e46fad44cc0c20eb079863b2a0d6d4aa993 /src/main/scala/firrtl/Namespace.scala | |
| parent | 6a05468ed0ece1ace3019666b16f2ae83ef76ef9 (diff) | |
| parent | 6255d5e398ae21dbc75db907bb9a9b24bc09d2b3 (diff) | |
Merge pull request #256 from ucb-bar/fix_boom_errors
Fix performance bug with remove accesses
Diffstat (limited to 'src/main/scala/firrtl/Namespace.scala')
| -rw-r--r-- | src/main/scala/firrtl/Namespace.scala | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/main/scala/firrtl/Namespace.scala b/src/main/scala/firrtl/Namespace.scala index e7a1cd10..952670cf 100644 --- a/src/main/scala/firrtl/Namespace.scala +++ b/src/main/scala/firrtl/Namespace.scala @@ -63,22 +63,16 @@ object Namespace { def apply(m: DefModule): Namespace = { val namespace = new Namespace - def buildNamespaceStmt(s: Statement): Statement = - s map buildNamespaceStmt match { - case dec: IsDeclaration => - namespace.namespace += dec.name - dec - case x => x - } - def buildNamespacePort(p: Port): Port = p match { - case dec: IsDeclaration => - namespace.namespace += dec.name - dec - case x => x + def buildNamespaceStmt(s: Statement): Seq[String] = s match { + case s: IsDeclaration => Seq(s.name) + case s: Conditionally => buildNamespaceStmt(s.conseq) ++ buildNamespaceStmt(s.alt) + case s: Block => s.stmts flatMap buildNamespaceStmt + case _ => Nil } - m.ports map buildNamespacePort + namespace.namespace ++= (m.ports collect { case dec: IsDeclaration => dec.name }) m match { - case in: Module => buildNamespaceStmt(in.body) + case in: Module => + namespace.namespace ++= buildNamespaceStmt(in.body) case _ => // Do nothing } |
