From 08e342d62c222b80c3a0480002eb71976218f589 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 10 Jan 2018 17:14:20 -0800 Subject: [PATCH] cmd/compile/internal/syntax: don't record semi position if there's none Fixes #23406. Change-Id: Ief04e20357c9ca03a5e496f1742428394c8ee658 Reviewed-on: https://go-review.googlesource.com/87317 Run-TryBot: Robert Griesemer Reviewed-by: Matthew Dempsky TryBot-Result: Gobot Gobot --- src/cmd/compile/internal/syntax/parser.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index ff3e769864..c8dfc967e6 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -1768,9 +1768,13 @@ func (p *parser) header(keyword token) (init SimpleStmt, cond Expr, post SimpleS lit string // valid if pos.IsKnown() } if p.tok != _Lbrace { - semi.pos = p.pos() - semi.lit = p.lit - p.want(_Semi) + if p.tok == _Semi { + semi.pos = p.pos() + semi.lit = p.lit + p.next() + } else { + p.want(_Semi) + } if keyword == _For { if p.tok != _Semi { if p.tok == _Lbrace { -- 2.50.0