diff options
| author | Schuyler Eldridge | 2019-01-17 17:45:56 -0500 |
|---|---|---|
| committer | GitHub | 2019-01-17 17:45:56 -0500 |
| commit | 6f4f5dd24adf815f1db81ceb7086eaa399784e6f (patch) | |
| tree | 6116e128b6258ed5eee7d042d0fabbd14dcb3df7 /chiselFrontend/src/main/scala/chisel3/internal/Builder.scala | |
| parent | 1e4fef2e933e01b692c57af1fd64b271829ab283 (diff) | |
| parent | 685790b2c6c7ff8ddfd34f2f84572a985d3416cc (diff) | |
Merge branch 'master' into improve-andr
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/internal/Builder.scala')
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/internal/Builder.scala | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala index ce4e1e88..0938ea9e 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala @@ -294,6 +294,21 @@ private[chisel3] object Builder { lastStack } + /** Recursively suggests names to supported "container" classes + * Arbitrary nestings of supported classes are allowed so long as the + * innermost element is of type HasId + * (Note: Map is Iterable[Tuple2[_,_]] and thus excluded) + */ + def nameRecursively(prefix: String, nameMe: Any, namer: (HasId, String) => Unit): Unit = nameMe match { + case (id: HasId) => namer(id, prefix) + case Some(elt) => nameRecursively(prefix, elt, namer) + case (iter: Iterable[_]) if iter.hasDefiniteSize => + for ((elt, i) <- iter.zipWithIndex) { + nameRecursively(s"${prefix}_${i}", elt, namer) + } + case _ => // Do nothing + } + def errors: ErrorLog = dynamicContext.errors def error(m: => String): Unit = if (dynamicContextVar.value.isDefined) errors.error(m) def warning(m: => String): Unit = if (dynamicContextVar.value.isDefined) errors.warning(m) |
