diff options
| author | mergify[bot] | 2022-06-18 00:08:41 +0000 |
|---|---|---|
| committer | GitHub | 2022-06-18 00:08:41 +0000 |
| commit | ea44af954657f743c45fbc45125e197ac3aadd20 (patch) | |
| tree | 66bf9e3560c336196e1407694fc08cdac4e6bd5e /src/test/scala | |
| parent | 01100fa9af0e34b9a4ddb87b8060e6e3178d4272 (diff) | |
Handle varargs constructor arguments in Bundle plugin (#2585) (#2588)
Previously, the plugin would crash with a useless internal error.
(cherry picked from commit 9fcfb252beb9f06d8d1409fe7db9c8b3b6b962ce)
Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'src/test/scala')
| -rw-r--r-- | src/test/scala/chiselTests/AutoClonetypeSpec.scala | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/AutoClonetypeSpec.scala b/src/test/scala/chiselTests/AutoClonetypeSpec.scala index 2ab4c800..5d2cd496 100644 --- a/src/test/scala/chiselTests/AutoClonetypeSpec.scala +++ b/src/test/scala/chiselTests/AutoClonetypeSpec.scala @@ -381,4 +381,23 @@ class AutoClonetypeSpec extends ChiselFlatSpec with Utils { } elaborate(new MyModule) } + + it should "support Bundles with vararg arguments" in { + // Without the fix, this doesn't even compile + // Extra parameter lists to make this a complex test case + class VarArgsBundle(x: Int)(y: Int, widths: Int*) extends Bundle { + def mkField(idx: Int): Option[UInt] = + (x +: y +: widths).lift(idx).map(w => UInt(w.W)) + val foo = mkField(0) + val bar = mkField(1) + val fizz = mkField(2) + val buzz = mkField(3) + } + class MyModule extends Module { + val in = IO(Input(new VarArgsBundle(1)(2, 3, 4))) + val out = IO(Output(new VarArgsBundle(1)(2, 3, 4))) + out := in + } + elaborate(new MyModule) + } } |
