mirror of
https://github.com/golang/go
synced 2024-10-14 03:43:28 +00:00
cmd/compile/internal/parser: improved syntax error for incorrect if/for/switch header
Starting the error message with "expecting" rather than "missing" causes the syntax error mechanism to add additional helpful info (it recognizes "expecting" but not "missing"). Fixes #17328. Change-Id: I8482ca5e5a6a6b22e0ed0d831b7328e264156334 Reviewed-on: https://go-review.googlesource.com/36637 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
7ad512e7ff
commit
3c22e5ca27
|
@ -1690,7 +1690,7 @@ func (p *parser) stmtBody(context string) []Stmt {
|
|||
}
|
||||
|
||||
if !p.got(_Lbrace) {
|
||||
p.syntax_error("missing { after " + context)
|
||||
p.syntax_error("expecting { after " + context)
|
||||
p.advance(_Name, _Rbrace)
|
||||
}
|
||||
|
||||
|
|
13
test/fixedbugs/issue17328.go
Normal file
13
test/fixedbugs/issue17328.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
// errorcheck
|
||||
|
||||
// Copyright 2017 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() {
|
||||
i := 0
|
||||
for ; ; i++) { // ERROR "unexpected \), expecting { after for clause"
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
package main
|
||||
|
||||
func main() {
|
||||
if x; y // ERROR "missing .*{.* after if clause|undefined"
|
||||
if x; y // ERROR "expected .*{.* after if clause|undefined"
|
||||
{
|
||||
z // GCCGO_ERROR "undefined"
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
package main
|
||||
|
||||
func main() {
|
||||
for x; y; z // ERROR "missing .*{.* after for clause|undefined"
|
||||
for x; y; z // ERROR "expected .*{.* after for clause|undefined"
|
||||
{
|
||||
z // GCCGO_ERROR "undefined"
|
||||
|
||||
|
|
|
@ -13,5 +13,5 @@ package main
|
|||
|
||||
func main() {
|
||||
for x // GCCGO_ERROR "undefined"
|
||||
{ // ERROR "missing .*{.* after for clause|missing operand"
|
||||
z // ERROR "undefined|missing { after for clause"
|
||||
{ // ERROR "expecting .*{.* after for clause|missing operand"
|
||||
z // ERROR "undefined|expecting { after for clause"
|
||||
|
|
Loading…
Reference in a new issue