Commit efb3cab9 authored by Robert Griesemer's avatar Robert Griesemer

cmd/compile/internal/syntax: generalize error about var decls in init clauses

Change-Id: I62f9748b97bec245338ebf9686fbf6ad6dc6a9c2
Reviewed-on: https://go-review.googlesource.com/36931
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
parent f823d305
......@@ -1703,8 +1703,8 @@ func (p *parser) header(keyword token) (init SimpleStmt, cond Expr, post SimpleS
if p.tok != _Semi {
// accept potential varDecl but complain
if keyword == _For && p.got(_Var) {
p.syntax_error("var declaration not allowed in for initializer")
if p.got(_Var) {
p.syntax_error(fmt.Sprintf("var declaration not allowed in %s initializer", keyword.String()))
}
init = p.simpleStmt(nil, keyword == _For)
// If we have a range clause, we are done (can only happen for keyword == _For).
......
......@@ -7,5 +7,9 @@
package main
func main() {
var x int // avoid undefined: x error below with recursive-descent parser
for var x = 0; x < 10; x++ { // ERROR "var declaration not allowed in for initializer"
if var x = 0; x < 10 {} // ERROR "var declaration not allowed in if initializer"
switch var x = 0; x {} // ERROR "var declaration not allowed in switch initializer"
for var x = 0; x < 10; {} // ERROR "var declaration not allowed in for initializer"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment