Commit 3c22e5ca authored by Robert Griesemer's avatar Robert Griesemer

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: 's avatarMatthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 7ad512e7
......@@ -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)
}
......
// 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"
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