aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Namespace.scala
diff options
context:
space:
mode:
authorJack Koenig2016-09-07 11:24:08 -0700
committerGitHub2016-09-07 11:24:08 -0700
commit0c6db9ef0669e3fb92fcc0bda2085f934d065f0b (patch)
treecfff6e46fad44cc0c20eb079863b2a0d6d4aa993 /src/main/scala/firrtl/Namespace.scala
parent6a05468ed0ece1ace3019666b16f2ae83ef76ef9 (diff)
parent6255d5e398ae21dbc75db907bb9a9b24bc09d2b3 (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.scala22
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
}