From 47c81ee3e68c96e94dafa389cb53b162e996a4df Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Fri, 4 Sep 2020 17:20:01 -0700 Subject: Better error messages for unserializable annotations (#1885) --- .../firrtlTests/annotationTests/JsonProtocolSpec.scala | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/test') diff --git a/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala b/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala index 54a94edb..44ad7d1f 100644 --- a/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala +++ b/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala @@ -3,12 +3,14 @@ package firrtlTests.annotationTests import firrtl._ -import firrtl.annotations.{JsonProtocol, NoTargetAnnotation} +import firrtl.annotations.{JsonProtocol, NoTargetAnnotation, UnserializableAnnotationException} import firrtl.ir._ import firrtl.options.Dependency +import scala.util.Failure import _root_.logger.{LogLevel, LogLevelAnnotation, Logger} import org.scalatest.flatspec.AnyFlatSpec import org.scalatest.matchers.should._ +import org.scalatest.Inside._ case class AnAnnotation( info: Info, @@ -66,4 +68,13 @@ class JsonProtocolSpec extends AnyFlatSpec with Matchers { compiler.execute(CircuitState(circuit, Nil)) } } + "Trying to serialize annotations that cannot be serialized" should "tell you why" in { + case class MyAnno(x: Int) extends NoTargetAnnotation + inside(JsonProtocol.serializeTry(MyAnno(3) :: Nil)) { + case Failure(e: UnserializableAnnotationException) => + e.getMessage should include("MyAnno") + // From json4s Exception + e.getMessage should include("Classes defined in method bodies are not supported") + } + } } -- cgit v1.2.3