aboutsummaryrefslogtreecommitdiff
path: root/src/go/parser/parser.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2015-02-23 23:51:05 -0800
committerRobert Griesemer <gri@golang.org>2015-02-24 21:34:05 +0000
commit5ce9fde8b64a07a7cbfbe43c9451e2d1d536c972 (patch)
tree235647f24d466e347f4f5b0b88cdd6589d74c447 /src/go/parser/parser.go
parentc651fdc0cf2ba7986ce0a0a23b4dbb44b6ecdae3 (diff)
downloadgo-5ce9fde8b64a07a7cbfbe43c9451e2d1d536c972.tar.gz
go-5ce9fde8b64a07a7cbfbe43c9451e2d1d536c972.zip
go/ast, go/parser: correct End() position for *ast.EmptyStmt
- added a new field ast.EmptyStmt.Implicit to indicate explicit or implicit semicolon - fix ast.EmptyStmt.End() accordingly - adjusted parser and added test case Fixes #9979. Change-Id: I72b0983b3a0cabea085598e1bf6c8df629776b57 Reviewed-on: https://go-review.googlesource.com/5720 Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/go/parser/parser.go')
-rw-r--r--src/go/parser/parser.go7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go
index 0409122c81..d1b766cfbb 100644
--- a/src/go/parser/parser.go
+++ b/src/go/parser/parser.go
@@ -2152,11 +2152,14 @@ func (p *parser) parseStmt() (s ast.Stmt) {
case token.FOR:
s = p.parseForStmt()
case token.SEMICOLON:
- s = &ast.EmptyStmt{Semicolon: p.pos}
+ // Is it ever possible to have an implicit semicolon
+ // producing an empty statement in a valid program?
+ // (handle correctly anyway)
+ s = &ast.EmptyStmt{Semicolon: p.pos, Implicit: p.lit == "\n"}
p.next()
case token.RBRACE:
// a semicolon may be omitted before a closing "}"
- s = &ast.EmptyStmt{Semicolon: p.pos}
+ s = &ast.EmptyStmt{Semicolon: p.pos, Implicit: true}
default:
// no statement found
pos := p.pos