aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/firrtl/IR.scala12
-rw-r--r--src/main/scala/firrtl/WIR.scala4
2 files changed, 11 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/IR.scala b/src/main/scala/firrtl/IR.scala
index 48b17549..4a941b85 100644
--- a/src/main/scala/firrtl/IR.scala
+++ b/src/main/scala/firrtl/IR.scala
@@ -89,15 +89,21 @@ case object BITS_SELECT_OP extends PrimOp
case object HEAD_OP extends PrimOp
case object TAIL_OP extends PrimOp
-trait Expression extends AST
+trait Expression extends AST {
+ def tpe: Type
+}
case class Ref(name: String, tpe: Type) extends Expression with HasName
case class SubField(exp: Expression, name: String, tpe: Type) extends Expression with HasName
case class SubIndex(exp: Expression, value: Int, tpe: Type) extends Expression
case class SubAccess(exp: Expression, index: Expression, tpe: Type) extends Expression
case class Mux(cond: Expression, tval: Expression, fval: Expression, tpe: Type) extends Expression
case class ValidIf(cond: Expression, value: Expression, tpe: Type) extends Expression
-case class UIntValue(value: BigInt, width: Width) extends Expression
-case class SIntValue(value: BigInt, width: Width) extends Expression
+case class UIntValue(value: BigInt, width: Width) extends Expression {
+ def tpe = UIntType(width)
+}
+case class SIntValue(value: BigInt, width: Width) extends Expression {
+ def tpe = SIntType(width)
+}
case class DoPrim(op: PrimOp, args: Seq[Expression], consts: Seq[BigInt], tpe: Type) extends Expression
trait Stmt extends AST
diff --git a/src/main/scala/firrtl/WIR.scala b/src/main/scala/firrtl/WIR.scala
index 05173f56..74ccabf4 100644
--- a/src/main/scala/firrtl/WIR.scala
+++ b/src/main/scala/firrtl/WIR.scala
@@ -53,8 +53,8 @@ case class WRef(name:String,tpe:Type,kind:Kind,gender:Gender) extends Expression
case class WSubField(exp:Expression,name:String,tpe:Type,gender:Gender) extends Expression
case class WSubIndex(exp:Expression,value:Int,tpe:Type,gender:Gender) extends Expression
case class WSubAccess(exp:Expression,index:Expression,tpe:Type,gender:Gender) extends Expression
-case class WVoid() extends Expression
-case class WInvalid() extends Expression
+case class WVoid() extends Expression { def tpe = UnknownType() }
+case class WInvalid() extends Expression { def tpe = UnknownType() }
case class WDefInstance(info:Info,name:String,module:String,tpe:Type) extends Stmt
case object ADDW_OP extends PrimOp