summaryrefslogtreecommitdiff
path: root/no-plugin-tests/src
diff options
context:
space:
mode:
authorMegan Wachs2021-10-05 10:27:18 -0700
committerGitHub2021-10-05 17:27:18 +0000
commitce15ad50a5c175db06c3bba5e3bf46b6c5466c47 (patch)
treebcec55dbb92bc827b3d3ec973481baa4d380c489 /no-plugin-tests/src
parent790a1806c7c5333cea15abbd2657fa893beb92c9 (diff)
Remove all Bundle cloneTypes and chiselRuntimeDeprecate its use (#2052)
* Remove all manual cloneTypes and make it chisel runtime deprecated to add one * runtime deprecate cloneType with runtime reflection * [Backport this commit] Bundle: add check that override def cloneType still works (will be made an error later) * Plugin: make it an error to override cloneType and add a test for that * Docs: can't compile the cloneType anymore * BundleSpec: comment out failing test I cannot get to fail or ignore Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'no-plugin-tests/src')
-rw-r--r--no-plugin-tests/src/test/scala/chiselTests/NoPluginBundleSpec.scala36
1 files changed, 36 insertions, 0 deletions
diff --git a/no-plugin-tests/src/test/scala/chiselTests/NoPluginBundleSpec.scala b/no-plugin-tests/src/test/scala/chiselTests/NoPluginBundleSpec.scala
new file mode 100644
index 00000000..b73be483
--- /dev/null
+++ b/no-plugin-tests/src/test/scala/chiselTests/NoPluginBundleSpec.scala
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package chiselTests
+
+import chisel3._
+import chisel3.stage.ChiselStage
+import chisel3.testers.BasicTester
+
+
+
+trait BundleSpecUtils {
+
+ class BundleBaz(val w: Int) extends Bundle {
+ val baz = UInt(w.W)
+ // (if we don't have the val on the val w: Int then it is an Exception)
+ // Check that we get a runtime deprecation warning if we don't have this:
+ // override def cloneType = (new BundleBaz(w)).asInstanceOf[this.type]
+ }
+
+}
+
+class NoPluginBundleSpec extends ChiselFlatSpec with BundleSpecUtils with Utils {
+
+ "No override def cloneType" should "give a runtime deprecation warning without compiler plugin" in {
+ class MyModule extends MultiIOModule {
+ val in = IO(Input(new BundleBaz(w = 3)))
+ val out = IO(Output(in.cloneType))
+ }
+ val (log, _) = grabLog(
+ ChiselStage.elaborate(new MyModule())
+ )
+ log should include ("warn")
+ log should include ("deprecated")
+ log should include ("The runtime reflection inference for cloneType")
+ }
+}