From c1dce12968cc93eba313b88100f284f2bc40a075 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Sat, 13 Mar 2021 18:38:32 -0800 Subject: [PATCH] allowReflectiveAutoCloneType must work outside of Builder context --- core/src/main/scala/chisel3/internal/Builder.scala | 8 ++++++-- src/test/scala/chiselTests/AutoClonetypeSpec.scala | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/chisel3/internal/Builder.scala b/core/src/main/scala/chisel3/internal/Builder.scala index b1016a2ee2d..084bdc88521 100644 --- a/core/src/main/scala/chisel3/internal/Builder.scala +++ b/core/src/main/scala/chisel3/internal/Builder.scala @@ -532,8 +532,12 @@ private[chisel3] object Builder extends LazyLogging { dynamicContext.currentReset = newReset } - // This should only be used for testing - def allowReflectiveAutoCloneType: Boolean = dynamicContext.allowReflectiveAutoCloneType + // This should only be used for testing, must be true outside of Builder context + def allowReflectiveAutoCloneType: Boolean = { + dynamicContextVar.value + .map(_.allowReflectiveAutoCloneType) + .getOrElse(true) + } def allowReflectiveAutoCloneType_=(value: Boolean): Unit = { dynamicContext.allowReflectiveAutoCloneType = value } diff --git a/src/test/scala/chiselTests/AutoClonetypeSpec.scala b/src/test/scala/chiselTests/AutoClonetypeSpec.scala index a6e5562a395..e0e6b2f0d17 100644 --- a/src/test/scala/chiselTests/AutoClonetypeSpec.scala +++ b/src/test/scala/chiselTests/AutoClonetypeSpec.scala @@ -127,6 +127,10 @@ class AutoClonetypeSpec extends ChiselFlatSpec with Utils { } } } + "Autoclonetype" should "work outside of a builder context" in { + new BundleWithIntArg(8).cloneType + } + def checkSubBundleInvalid() = { elaborate { new Module { val io = IO(new Bundle{}).suggestName("io")