From cd2bdb2eee5c2164b447022e25c1554afea859f0 Mon Sep 17 00:00:00 2001 From: Sequencer Date: Mon, 6 Apr 2020 22:02:30 +0000 Subject: enable Lit for Record. (#1400) --- core/src/main/scala/chisel3/experimental/package.scala | 2 +- src/test/scala/chiselTests/LiteralExtractorSpec.scala | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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) + } } -- cgit v1.2.3