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>
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).
+++ /dev/null
-// 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"
--- /dev/null
+// 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"
+}