mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
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: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
f823d30514
commit
efb3cab960
|
@ -1703,8 +1703,8 @@ func (p *parser) header(keyword token) (init SimpleStmt, cond Expr, post SimpleS
|
||||||
|
|
||||||
if p.tok != _Semi {
|
if p.tok != _Semi {
|
||||||
// accept potential varDecl but complain
|
// accept potential varDecl but complain
|
||||||
if keyword == _For && p.got(_Var) {
|
if p.got(_Var) {
|
||||||
p.syntax_error("var declaration not allowed in for initializer")
|
p.syntax_error(fmt.Sprintf("var declaration not allowed in %s initializer", keyword.String()))
|
||||||
}
|
}
|
||||||
init = p.simpleStmt(nil, keyword == _For)
|
init = p.simpleStmt(nil, keyword == _For)
|
||||||
// If we have a range clause, we are done (can only happen for keyword == _For).
|
// If we have a range clause, we are done (can only happen for keyword == _For).
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
// errorcheck
|
|
||||||
|
|
||||||
// Copyright 2010 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
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"
|
|
15
test/syntax/initvar.go
Normal file
15
test/syntax/initvar.go
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// errorcheck
|
||||||
|
|
||||||
|
// Copyright 2010 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
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"
|
||||||
|
}
|
Loading…
Reference in a new issue