summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJim Lawson2016-12-19 12:27:15 -0800
committerGitHub2016-12-19 12:27:15 -0800
commit4eebd787312792f7a3722af61ab7e6349081d3b4 (patch)
tree333fe66fba7ea7337fa1f6ffe1ec905cd2f724f3 /src
parent0233f704e83d380b1fe8311dfffa3f44f74b506b (diff)
parentdd4650d29ed18ec610ad7561f4e9c990ba887a3d (diff)
Merge pull request #360 from ucb-bar/exceptionfix
Throw exceptions for cloneType failures - fix #358
Diffstat (limited to 'src')
-rw-r--r--src/test/scala/chiselTests/MissingCloneBindingExceptionSpec.scala57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/MissingCloneBindingExceptionSpec.scala b/src/test/scala/chiselTests/MissingCloneBindingExceptionSpec.scala
new file mode 100644
index 00000000..719484ac
--- /dev/null
+++ b/src/test/scala/chiselTests/MissingCloneBindingExceptionSpec.scala
@@ -0,0 +1,57 @@
+// See LICENSE for license details.
+
+package chiselTests
+import Chisel.ChiselException
+import org.scalatest._
+
+class MissingCloneBindingExceptionSpec extends ChiselFlatSpec with Matchers {
+ behavior of "missing cloneType in Chisel3"
+ ( the[ChiselException] thrownBy {
+ import chisel3._
+
+ class TestIO(w: Int) extends Bundle {
+ val a = Vec(4, UInt(width = w)).asInput
+
+ //override def cloneType = (new TestIO(w)).asInstanceOf[this.type]
+ }
+
+ class Test extends Module {
+ val io = IO(new TestIO(32))
+ }
+
+ class TestTop extends Module {
+ val io = IO(new Bundle {})
+
+ val subs = Vec.fill(2) {
+ Module(new Test).io
+ }
+ }
+
+ elaborate(new TestTop)
+ }).getMessage should include("needs cloneType method")
+
+ behavior of "missing cloneType in Chisel2"
+ ( the[ChiselException] thrownBy {
+ import Chisel._
+
+ class TestIO(w: Int) extends Bundle {
+ val a = Vec(4, UInt(width = w)).asInput
+
+ //override def cloneType = (new TestIO(w)).asInstanceOf[this.type]
+ }
+
+ class Test extends Module {
+ val io = IO(new TestIO(32))
+ }
+
+ class TestTop extends Module {
+ val io = IO(new Bundle {})
+
+ val subs = Vec.fill(2) {
+ Module(new Test).io
+ }
+ }
+
+ elaborate(new TestTop)
+ }).getMessage should include("needs cloneType method")
+}