aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/ir/Serializer.scala13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/ir/Serializer.scala b/src/main/scala/firrtl/ir/Serializer.scala
index bf9a57c1..08ea1445 100644
--- a/src/main/scala/firrtl/ir/Serializer.scala
+++ b/src/main/scala/firrtl/ir/Serializer.scala
@@ -26,6 +26,7 @@ object Serializer {
case n: Param => s(n)(builder, indent)
case n: DefModule => s(n)(builder, indent)
case n: Circuit => s(n)(builder, indent)
+ case other => builder ++= other.serialize // Handle user-defined nodes
}
builder.toString()
}
@@ -54,6 +55,7 @@ object Serializer {
infos.zipWithIndex.foreach { case (f, i) => b ++= f.escaped; if (i < lastId) b += ' ' }
b += ']'
}
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(str: StringLit)(implicit b: StringBuilder, indent: Int): Unit = b ++= str.serialize
@@ -79,6 +81,7 @@ object Serializer {
case firrtl.WVoid => b ++= "VOID"
case firrtl.WInvalid => b ++= "INVALID"
case firrtl.EmptyExpression => b ++= "EMPTY"
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Statement)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -149,6 +152,7 @@ object Serializer {
case firrtl.WDefInstanceConnector(info, name, module, tpe, portCons) =>
b ++= "inst "; b ++= name; b ++= " of "; b ++= module; b ++= " with "; s(tpe); b ++= " connected to ("
s(portCons.map(_._2), ", "); b += ')'; s(info)
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Width)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -156,6 +160,7 @@ object Serializer {
case UnknownWidth => // empty string
case CalcWidth(arg) => b ++= "calcw("; s(arg); b += ')'
case VarWidth(name) => b += '<'; b ++= name; b += '>'
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def sPoint(node: Width)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -163,11 +168,13 @@ object Serializer {
case UnknownWidth => // empty string
case CalcWidth(arg) => b ++= "calcw("; s(arg); b += ')'
case VarWidth(name) => b ++= "<<"; b ++= name; b ++= ">>"
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Orientation)(implicit b: StringBuilder, indent: Int): Unit = node match {
case Default => // empty string
case Flip => b ++= "flip "
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Field)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -188,11 +195,13 @@ object Serializer {
case UnknownType => b += '?'
// the IntervalType has a complicated custom serialization method which does not recurse
case i: IntervalType => b ++= i.serialize
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Direction)(implicit b: StringBuilder, indent: Int): Unit = node match {
case Input => b ++= "input"
case Output => b ++= "output"
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Port)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -207,6 +216,7 @@ object Serializer {
case RawStringParam(name, value) =>
b ++= "parameter "; b ++= name; b ++= " = "
b += '\''; b ++= value.replace("'", "\\'"); b += '\''
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: DefModule)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -220,6 +230,7 @@ object Serializer {
ports.foreach { p => newLineAndIndent(1); s(p) }
newLineAndIndent(1); b ++= "defname = "; b ++= defname
params.foreach { p => newLineAndIndent(1); s(p) }
+ case other => b ++= other.serialize // Handle user-defined nodes
}
private def s(node: Circuit)(implicit b: StringBuilder, indent: Int): Unit = node match {
@@ -239,7 +250,7 @@ object Serializer {
case VarBound(name) => b ++= name
case Open(value) => b ++ "o("; b ++= value.toString; b += ')'
case Closed(value) => b ++ "c("; b ++= value.toString; b += ')'
- case other => other.serialize
+ case other => b ++= other.serialize // Handle user-defined nodes
}
/** create a new line with the appropriate indent */