diff options
| author | Zhuanhao Wu | 2019-12-04 23:27:56 -0500 |
|---|---|---|
| committer | Richard Lin | 2019-12-04 20:27:56 -0800 |
| commit | 03bbb258a4ce6800b692e20a579757e4f054fa63 (patch) | |
| tree | a924325ec8b3c22e4a03d0bbf534efe6566187b2 /chiselFrontend/src/main/scala/chisel3 | |
| parent | 2a78c81571b07f499518a83b3fee8026bd847009 (diff) | |
Add ChiselEnum to BundleLiterals (#1215)
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3')
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/Aggregate.scala | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/Aggregate.scala b/chiselFrontend/src/main/scala/chisel3/Aggregate.scala index 1619fd17..42b40ed9 100644 --- a/chiselFrontend/src/main/scala/chisel3/Aggregate.scala +++ b/chiselFrontend/src/main/scala/chisel3/Aggregate.scala @@ -8,6 +8,7 @@ import scala.language.experimental.macros import chisel3.experimental.BaseModule import chisel3.experimental.BundleLiteralException +import chisel3.experimental.EnumType import chisel3.internal._ import chisel3.internal.Builder.pushCommand import chisel3.internal.firrtl._ @@ -550,6 +551,15 @@ abstract class Record(private[chisel3] implicit val compileOptions: CompileOptio value.topBinding.asInstanceOf[BundleLitBinding].litMap.map { case (valueField, valueValue) => remap(valueField) -> valueValue } + case field: EnumType => { + if (!(field typeEquivalent value)) { + throw new BundleLiteralException(s"field $fieldName $field specified with non-type-equivalent enum value $value") + } + val litArg = valueBinding match { + case ElementLitBinding(litArg) => litArg + } + Seq(field -> litArg) + } case _ => throw new BundleLiteralException(s"unsupported field $fieldName of type $field") } } // don't convert to a Map yet to preserve duplicate keys |
