diff options
| author | Albert Chen | 2020-04-10 12:20:32 -0700 |
|---|---|---|
| committer | GitHub | 2020-04-10 19:20:32 +0000 |
| commit | 632930723adc2f78d4d6445acf5f8bcc250a6c0c (patch) | |
| tree | e2f331cf6e9685e3447135f790764ffddc59cbe5 /src | |
| parent | 18d5154c83f9af99ff0c90d6b2c1329af4f1a949 (diff) | |
Add ground type serializer (#1502)
* update JsonProtocolSpec to test GroundType
* add custom serializer for GroundType
* get rid of trailing comma
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/annotations/JsonProtocol.scala | 6 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala | 7 |
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) } - } |
