diff options
| author | Jack Koenig | 2018-03-02 16:32:32 -0800 |
|---|---|---|
| committer | GitHub | 2018-03-02 16:32:32 -0800 |
| commit | dd03e983298819922978664aa04d307595d2b9fc (patch) | |
| tree | 4fdbca3da6d7d2f24e1d1e5763081420757af282 | |
| parent | 7f29fac97f48f67e11fce975b3ab236c8c643eff (diff) | |
Fix annotation deserialization of component subfields (#750)
Also make InvalidAnnotationFileException extend FIRRTLException for better
error reporting
| -rw-r--r-- | src/main/scala/firrtl/annotations/AnnotationUtils.scala | 10 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/AnnotationTests.scala | 1 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/annotations/AnnotationUtils.scala b/src/main/scala/firrtl/annotations/AnnotationUtils.scala index 0fc192a6..6b7f9a60 100644 --- a/src/main/scala/firrtl/annotations/AnnotationUtils.scala +++ b/src/main/scala/firrtl/annotations/AnnotationUtils.scala @@ -14,7 +14,7 @@ import firrtl.annotations.AnnotationYamlProtocol._ import firrtl.ir._ import firrtl.Utils.error -class InvalidAnnotationFileException(msg: String) extends Exception(msg) +class InvalidAnnotationFileException(msg: String) extends FIRRTLException(msg) object AnnotationUtils { def toYaml(a: LegacyAnnotation): String = a.toYaml.prettyPrint @@ -48,10 +48,10 @@ object AnnotationUtils { case None => Seq(s) } - def toNamed(s: String): Named = tokenize(s) match { - case Seq(n) => CircuitName(n) - case Seq(c, ".", m) => ModuleName(m, CircuitName(c)) - case Seq(c, ".", m, ".", x) => ComponentName(x, ModuleName(m, CircuitName(c))) + def toNamed(s: String): Named = s.split("\\.", 3) match { + case Array(n) => CircuitName(n) + case Array(c, m) => ModuleName(m, CircuitName(c)) + case Array(c, m, x) => ComponentName(x, ModuleName(m, CircuitName(c))) } /** Given a serialized component/subcomponent reference, subindex, subaccess, diff --git a/src/test/scala/firrtlTests/AnnotationTests.scala b/src/test/scala/firrtlTests/AnnotationTests.scala index 85814713..f0d4cb25 100644 --- a/src/test/scala/firrtlTests/AnnotationTests.scala +++ b/src/test/scala/firrtlTests/AnnotationTests.scala @@ -495,6 +495,7 @@ class JsonAnnotationTests extends AnnotationTests { InlineAnnotation(CircuitName("fox")), InlineAnnotation(ModuleName("dog", CircuitName("bear"))), InlineAnnotation(ComponentName("chocolate", ModuleName("like", CircuitName("i")))), + InlineAnnotation(ComponentName("chocolate.frog", ModuleName("like", CircuitName("i")))), PinAnnotation(Seq("sea-lion", "monk-seal")) ).toArray |
