diff options
| author | Sequencer | 2020-04-06 22:02:30 +0000 |
|---|---|---|
| committer | GitHub | 2020-04-06 15:02:30 -0700 |
| commit | cd2bdb2eee5c2164b447022e25c1554afea859f0 (patch) | |
| tree | 11e792d961a852f0cec20157cc2c521ced3b674d | |
| parent | aa419c7190b42be1e7df78d5cb7c1ca4a8bc85b6 (diff) | |
enable Lit for Record. (#1400)
| -rw-r--r-- | core/src/main/scala/chisel3/experimental/package.scala | 2 | ||||
| -rw-r--r-- | src/test/scala/chiselTests/LiteralExtractorSpec.scala | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/core/src/main/scala/chisel3/experimental/package.scala b/core/src/main/scala/chisel3/experimental/package.scala index 985f7715..0c0b4490 100644 --- a/core/src/main/scala/chisel3/experimental/package.scala +++ b/core/src/main/scala/chisel3/experimental/package.scala @@ -130,7 +130,7 @@ package object experimental { // scalastyle:ignore object.name trait NoChiselNamePrefix object BundleLiterals { - implicit class AddBundleLiteralConstructor[T <: Bundle](x: T) { + implicit class AddBundleLiteralConstructor[T <: Record](x: T) { //scalastyle:off method.name def Lit(elems: (T => (Data, Data))*): T = { x._makeLit(elems: _*) diff --git a/src/test/scala/chiselTests/LiteralExtractorSpec.scala b/src/test/scala/chiselTests/LiteralExtractorSpec.scala index 145c1ef2..8735a0ae 100644 --- a/src/test/scala/chiselTests/LiteralExtractorSpec.scala +++ b/src/test/scala/chiselTests/LiteralExtractorSpec.scala @@ -6,6 +6,7 @@ import chisel3._ import chisel3.experimental._ import chisel3.experimental.BundleLiterals._ import chisel3.testers.BasicTester +import scala.collection.immutable.ListMap class LiteralExtractorSpec extends ChiselFlatSpec { "litValue" should "return the literal value" in { @@ -138,4 +139,18 @@ class LiteralExtractorSpec extends ChiselFlatSpec { assert(myBundleLiteral.b.litValue == 1) assert(myBundleLiteral.b.litToBoolean == true) } + + "record literals" should "do the right thing" in { + class MyRecord extends Record{ + override val elements = ListMap( + "a" -> UInt(8.W), + "b" -> Bool() + ) + override def cloneType = (new MyRecord).asInstanceOf[this.type] + } + + val myRecordLiteral = new (MyRecord).Lit(_.elements("a") -> 42.U, _.elements("b") -> true.B) + assert(myRecordLiteral.elements("a").litValue == 42) + assert(myRecordLiteral.elements("b").litValue == 1) + } } |
