diff options
| author | Schuyler Eldridge | 2018-11-07 15:30:17 -0500 |
|---|---|---|
| committer | GitHub | 2018-11-07 15:30:17 -0500 |
| commit | 75284395ba7ef285daefd2da38e720590b465ad7 (patch) | |
| tree | 7ae4e04a16eb87ce306a9d891acabbd4c6b1c8b7 /src/main/scala/firrtl/annotations | |
| parent | 17b4e9835bd95dcf91c5ea5a4d7c52280031ea93 (diff) | |
| parent | b05eaea3e59c64d619a544c63311d510f335f7e5 (diff) | |
Merge pull request #919 from seldridge/f764.6
- Add, but do not use Options-mirroring Annotations
Diffstat (limited to 'src/main/scala/firrtl/annotations')
| -rw-r--r-- | src/main/scala/firrtl/annotations/JsonProtocol.scala | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/annotations/JsonProtocol.scala b/src/main/scala/firrtl/annotations/JsonProtocol.scala index 36699151..acb2d957 100644 --- a/src/main/scala/firrtl/annotations/JsonProtocol.scala +++ b/src/main/scala/firrtl/annotations/JsonProtocol.scala @@ -34,6 +34,17 @@ object JsonProtocol { { case JString(s) => AnnotationUtils.toNamed(s).asInstanceOf[ComponentName] }, { case named: ComponentName => JString(named.serialize) } )) + class TransformSerializer extends CustomSerializer[Transform](format => ( + { case JString(s) => + try { + Class.forName(s).asInstanceOf[Class[_ <: Transform]].newInstance() + } catch { + case e: java.lang.InstantiationException => throw new FIRRTLException( + "NoSuchMethodException during construction of serialized Transform. Is your Transform an inner class?", e) + case t: Throwable => throw t + }}, + { case x: Transform => JString(x.getClass.getName) } + )) class TargetSerializer extends CustomSerializer[Target](format => ( @@ -67,7 +78,7 @@ object JsonProtocol { new TransformClassSerializer + new NamedSerializer + new CircuitNameSerializer + new ModuleNameSerializer + new ComponentNameSerializer + new TargetSerializer + new GenericTargetSerializer + new CircuitTargetSerializer + new ModuleTargetSerializer + - new InstanceTargetSerializer + new ReferenceTargetSerializer + new InstanceTargetSerializer + new ReferenceTargetSerializer + new TransformSerializer } /** Serialize annotations to a String for emission */ |
