Skip to content

Commit

Permalink
cmd/compile: remove parser lineno hack for issue #13267
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
mdempsky committed Feb 24, 2016
1 parent e360f7c commit 1e4e096
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions src/cmd/compile/internal/gc/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 ";" } ")" ) .
Expand Down

0 comments on commit 1e4e096

Please sign in to comment.