aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/parser')
-rw-r--r--src/main/scala/firrtl/parser/Listener.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/parser/Listener.scala b/src/main/scala/firrtl/parser/Listener.scala
index ffaa22b2..1f6692ca 100644
--- a/src/main/scala/firrtl/parser/Listener.scala
+++ b/src/main/scala/firrtl/parser/Listener.scala
@@ -6,6 +6,7 @@ import firrtl.antlr.{FIRRTLParser, _}
import firrtl.Visitor
import firrtl.Parser.InfoMode
import firrtl.ir._
+import firrtl.UnsupportedVersionException
import scala.collection.mutable
import scala.concurrent.{Await, Future}
@@ -25,6 +26,16 @@ private[firrtl] class Listener(infoMode: InfoMode) extends FIRRTLBaseListener {
}
override def exitCircuit(ctx: FIRRTLParser.CircuitContext): Unit = {
+ if (ctx.version != null) {
+ val version = ctx.version.semver.getText
+ val parts = version.split("\\.")
+ val (major, minor, patch) = (parts(0).toInt, parts(1).toInt, parts(2).toInt)
+ if (Version(major, minor, patch).incompatible(Serializer.version)) {
+ throw new UnsupportedVersionException(
+ s"FIRRTL version ${version} is not supported (greater than ${Serializer.version.serialize})"
+ )
+ }
+ }
info = Some(visitor.visitInfo(Option(ctx.info), ctx))
main = Some(ctx.id.getText)
ctx.children = null // Null out to save memory