diff options
| author | Jack Koenig | 2018-06-29 17:52:32 -0700 |
|---|---|---|
| committer | GitHub | 2018-06-29 17:52:32 -0700 |
| commit | b17998eacb8e7b38b90829279e852bf8d5911f83 (patch) | |
| tree | 423c4e2b0841c3f92c1c85a101f8c736ebce0669 /src | |
| parent | 55c98cbb0f15c98cc58f9f55c9190acfd6cb6f38 (diff) | |
Catch returns from within when blocks and provide an error message (#842)
Resolves #841
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/scala/chiselTests/When.scala | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/When.scala b/src/test/scala/chiselTests/When.scala index a1a7afb7..58d5a1bd 100644 --- a/src/test/scala/chiselTests/When.scala +++ b/src/test/scala/chiselTests/When.scala @@ -106,4 +106,26 @@ class WhenSpec extends ChiselFlatSpec { "Conditional connections to submodule ports" should "be handled properly" in { assertTesterPasses(new SubmoduleWhenTester) } + + "Returning in a when scope" should "give a reasonable error message" in { + val e = the [ChiselException] thrownBy { + elaborate(new Module { + val io = IO(new Bundle { + val foo = Input(UInt(8.W)) + val bar = Input(UInt(8.W)) + val cond = Input(Bool()) + val out = Output(UInt(8.W)) + }) + def func(): UInt = { + when(io.cond) { + // This is bad, do not do this!!! + return io.foo + } + return io.bar + } + io.out := func() + }) + } + e.getMessage should include ("Cannot exit from a when() block with a \"return\"") + } } |
