summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala
diff options
context:
space:
mode:
authorZhuanhao Wu2019-12-04 23:27:56 -0500
committerRichard Lin2019-12-04 20:27:56 -0800
commit03bbb258a4ce6800b692e20a579757e4f054fa63 (patch)
treea924325ec8b3c22e4a03d0bbf534efe6566187b2 /chiselFrontend/src/main/scala
parent2a78c81571b07f499518a83b3fee8026bd847009 (diff)
Add ChiselEnum to BundleLiterals (#1215)
Diffstat (limited to 'chiselFrontend/src/main/scala')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/Aggregate.scala10
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