From ce15ad50a5c175db06c3bba5e3bf46b6c5466c47 Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Tue, 5 Oct 2021 10:27:18 -0700 Subject: 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 --- .../scala/chiselTests/NoPluginBundleSpec.scala | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 no-plugin-tests/src/test/scala/chiselTests/NoPluginBundleSpec.scala (limited to 'no-plugin-tests/src') 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") + } +} -- cgit v1.2.3