summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/scala/chisel3/Module.scala2
-rw-r--r--src/main/scala/chisel3/aop/Select.scala7
-rw-r--r--src/test/scala/chiselTests/aop/SelectSpec.scala7
3 files changed, 9 insertions, 7 deletions
diff --git a/core/src/main/scala/chisel3/Module.scala b/core/src/main/scala/chisel3/Module.scala
index f82b6a7b..41fe4554 100644
--- a/core/src/main/scala/chisel3/Module.scala
+++ b/core/src/main/scala/chisel3/Module.scala
@@ -184,7 +184,7 @@ package internal {
object BaseModule {
// Private internal class to serve as a _parent for Data in cloned ports
- private[chisel3] class ModuleClone(private[chisel3] val _proto: BaseModule) extends BaseModule {
+ private[chisel3] class ModuleClone(_proto: BaseModule) extends BaseModule {
// ClonePorts that hold the bound ports for this module
// Used for setting the refs of both this module and the Record
private[BaseModule] var _portsRecord: Record = _
diff --git a/src/main/scala/chisel3/aop/Select.scala b/src/main/scala/chisel3/aop/Select.scala
index 08cf40ff..a16c415c 100644
--- a/src/main/scala/chisel3/aop/Select.scala
+++ b/src/main/scala/chisel3/aop/Select.scala
@@ -82,11 +82,12 @@ object Select {
def instances(module: BaseModule): Seq[BaseModule] = {
check(module)
module._component.get match {
- case d: DefModule => d.commands.collect {
+ case d: DefModule => d.commands.flatMap {
case i: DefInstance => i.id match {
- case clone: ModuleClone => clone._proto
- case other => other
+ case _: ModuleClone => None
+ case other => Some(other)
}
+ case _ => None
}
case other => Nil
}
diff --git a/src/test/scala/chiselTests/aop/SelectSpec.scala b/src/test/scala/chiselTests/aop/SelectSpec.scala
index d34f4391..14ae202d 100644
--- a/src/test/scala/chiselTests/aop/SelectSpec.scala
+++ b/src/test/scala/chiselTests/aop/SelectSpec.scala
@@ -153,7 +153,7 @@ class SelectSpec extends ChiselFlatSpec {
assert(bbs.size == 1)
}
- "CloneModuleAsRecord" should "show up in Select aspects as duplicates" in {
+ "CloneModuleAsRecord" should "NOT show up in Select aspects" in {
import chisel3.experimental.CloneModuleAsRecord
class Child extends RawModule {
val in = IO(Input(UInt(8.W)))
@@ -174,8 +174,9 @@ class SelectSpec extends ChiselFlatSpec {
}).elaborate
.collectFirst { case DesignAnnotation(design: Top) => design }
.get
- val mods = Select.collectDeep(top) { case mod => mod }
- mods should equal (Seq(top, top.inst0, top.inst0))
+ Select.collectDeep(top) { case x => x } should equal (Seq(top, top.inst0))
+ Select.getDeep(top)(x => Seq(x)) should equal (Seq(top, top.inst0))
+ Select.instances(top) should equal (Seq(top.inst0))
}
}