From 1e4e09612c9b48abc32bd4b75700440a7eeaa318 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Tue, 23 Feb 2016 15:29:19 -0800 Subject: [PATCH] cmd/compile: remove parser lineno hack for issue #13267 After golang.org/cl/19652 removed the bizarre lexlineno{++,--} statements for parsing canned imports, this hack for #13267 is no longer necessary: $ echo -n 0 > /tmp/0.go $ go tool compile /tmp/0.go /tmp/0.go:1: syntax error: package statement must be first Apparently setting lexlineno to 2 while parsing the canned imports caused prevlineno and lineno to also be set to 2. After we finished parsing imports and restored lexlineno to 1, since "package" is the first token in a source file, we'll have fixed lineno = 1, but prevlineno was still set to 2. Change-Id: Ibcc49fe3402264819b9abb53505631f7a0ad4a36 Reviewed-on: https://go-review.googlesource.com/19859 Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/parser.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/cmd/compile/internal/gc/parser.go b/src/cmd/compile/internal/gc/parser.go index fbc5a5e1eb83c..61656845744b8 100644 --- a/src/cmd/compile/internal/gc/parser.go +++ b/src/cmd/compile/internal/gc/parser.go @@ -280,13 +280,11 @@ func (p *parser) package_() { defer p.trace("package_")() } - if p.got(LPACKAGE) { - mkpackage(p.sym().Name) - } else { - prevlineno = lineno // see issue #13267 + if !p.got(LPACKAGE) { p.syntax_error("package statement must be first") errorexit() } + mkpackage(p.sym().Name) } // ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) .