aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorJack Koenig2021-05-21 15:42:53 -0700
committerGitHub2021-05-21 22:42:53 +0000
commit117b84a15a352451c1217155f96b09d098681baf (patch)
tree7526c4c6ad3b741ff9d886d0cf994d946a6c8a7b /src/test
parent15309c972cd9bc2d95437af9aef9875aa169b37e (diff)
Optimize Annotation.getTargets (#2244)
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/annotationTests/AnnotationSpec.scala35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/annotationTests/AnnotationSpec.scala b/src/test/scala/firrtlTests/annotationTests/AnnotationSpec.scala
new file mode 100644
index 00000000..2729b4dc
--- /dev/null
+++ b/src/test/scala/firrtlTests/annotationTests/AnnotationSpec.scala
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package firrtlTests.annotationTests
+
+import firrtl.RenameMap
+import firrtl.annotations._
+import firrtl.testutils.FirrtlFlatSpec
+
+object AnnotationSpec {
+ case class TestAnno(pairs: List[(String, ReferenceTarget)]) extends Annotation {
+ def update(renames: RenameMap): Seq[Annotation] = {
+ val pairsx = pairs.flatMap {
+ case (n, t) =>
+ val ts = renames
+ .get(t)
+ .map(_.map(_.asInstanceOf[ReferenceTarget]))
+ .getOrElse(Seq(t))
+ ts.map(n -> _)
+ }
+ Seq(TestAnno(pairsx))
+ }
+ }
+}
+
+class AnnotationSpec extends FirrtlFlatSpec {
+ import AnnotationSpec._
+
+ behavior.of("Annotation.getTargets")
+
+ it should "not stack overflow" in {
+ val ref = CircuitTarget("Top").module("Foo").ref("vec")
+ val anno = TestAnno((0 until 10000).map(i => (i.toString, ref.index(i))).toList)
+ anno.getTargets should be(anno.pairs.map(_._2))
+ }
+}