aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/annotations/JsonProtocol.scala6
-rw-r--r--src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala7
2 files changed, 9 insertions, 4 deletions
diff --git a/src/main/scala/firrtl/annotations/JsonProtocol.scala b/src/main/scala/firrtl/annotations/JsonProtocol.scala
index 312b826a..941bf003 100644
--- a/src/main/scala/firrtl/annotations/JsonProtocol.scala
+++ b/src/main/scala/firrtl/annotations/JsonProtocol.scala
@@ -122,6 +122,10 @@ object JsonProtocol {
{ case JString(s) => Parser.parseInfo(s) },
{ case info: Info => JString(info.serialize) }
))
+ class GroundTypeSerializer extends CustomSerializer[GroundType](format => (
+ { case JString(s) => Parser.parseType(s).asInstanceOf[GroundType] },
+ { case tpe: GroundType => JString(tpe.serialize) }
+ ))
/** Construct Json formatter for annotations */
def jsonFormat(tags: Seq[Class[_]]) = {
@@ -133,7 +137,7 @@ object JsonProtocol {
new LoadMemoryFileTypeSerializer + new IsModuleSerializer + new IsMemberSerializer +
new CompleteTargetSerializer + new TypeSerializer + new ExpressionSerializer +
new StatementSerializer + new PortSerializer + new DefModuleSerializer +
- new CircuitSerializer + new InfoSerializer
+ new CircuitSerializer + new InfoSerializer + new GroundTypeSerializer
}
/** Serialize annotations to a String for emission */
diff --git a/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala b/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala
index 2dce89db..507c5291 100644
--- a/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala
+++ b/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala
@@ -14,7 +14,8 @@ case class AnAnnotation(
port: Port,
statement: Statement,
expr: Expression,
- tpe: Type
+ tpe: Type,
+ groundType: GroundType
) extends NoTargetAnnotation
class JsonProtocolSpec extends FlatSpec with Matchers {
@@ -33,10 +34,10 @@ class JsonProtocolSpec extends FlatSpec with Matchers {
val stmt = mod.asInstanceOf[Module].body
val expr = stmt.asInstanceOf[Block].stmts.head.asInstanceOf[Connect].expr
val tpe = port.tpe
- val inputAnnos = Seq(AnAnnotation(cir.info, cir, mod, port, stmt, expr, tpe))
+ val groundType = port.tpe.asInstanceOf[GroundType]
+ val inputAnnos = Seq(AnAnnotation(cir.info, cir, mod, port, stmt, expr, tpe, groundType))
val annosString = JsonProtocol.serialize(inputAnnos)
val outputAnnos = JsonProtocol.deserialize(annosString)
inputAnnos should be (outputAnnos)
}
-
}