From 596b766639cff559e52dd51c1b7c0e3f6f58e11d Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Tue, 14 Jul 2020 12:24:29 -0700 Subject: Fix parsing of info on multi-line registers (#1735) For multi-line registers, the parsed source locator is located in a different place in the concrete syntax tree than it is for other Statements. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>--- src/main/scala/firrtl/Visitor.scala | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/firrtl/Visitor.scala b/src/main/scala/firrtl/Visitor.scala index 48a887de..76b5c2cf 100644 --- a/src/main/scala/firrtl/Visitor.scala +++ b/src/main/scala/firrtl/Visitor.scala @@ -304,16 +304,17 @@ class Visitor(infoMode: InfoMode) extends AbstractParseTreeVisitor[FirrtlNode] w case "reg" => val name = ctx.id(0).getText val tpe = visitType(ctx.`type`()) - val (reset, init) = { + val (reset, init, rinfo) = { val rb = ctx.reset_block() if (rb != null) { val sr = rb.simple_reset.simple_reset0() - (visitExp(sr.exp(0)), visitExp(sr.exp(1))) + val innerInfo = if (info == NoInfo) visitInfo(Option(rb.info), ctx) else info + (visitExp(sr.exp(0)), visitExp(sr.exp(1)), innerInfo) } else - (UIntLiteral(0, IntWidth(1)), Reference(name, tpe)) + (UIntLiteral(0, IntWidth(1)), Reference(name, tpe), info) } - DefRegister(info, name, tpe, visitExp(ctx_exp(0)), reset, init) + DefRegister(rinfo, name, tpe, visitExp(ctx_exp(0)), reset, init) case "mem" => visitMem(ctx) case "cmem" => val (tpe, size) = visitCMemType(ctx.`type`()) -- cgit v1.2.3