]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile/internal/parser: improved syntax error for incorrect if/for/switch header
authorRobert Griesemer <gri@golang.org>
Thu, 9 Feb 2017 01:56:41 +0000 (17:56 -0800)
committerRobert Griesemer <gri@golang.org>
Thu, 9 Feb 2017 03:54:47 +0000 (03:54 +0000)
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>

src/cmd/compile/internal/syntax/parser.go
test/fixedbugs/issue17328.go [new file with mode: 0644]
test/syntax/semi1.go
test/syntax/semi3.go
test/syntax/semi4.go

index f016a6adbe3fa9d70175b0200ffff81dea03ad84..c1faa2789444e8fb6ad0a8d9996326ea7708faed 100644 (file)
@@ -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)
        }
 
diff --git a/test/fixedbugs/issue17328.go b/test/fixedbugs/issue17328.go
new file mode 100644 (file)
index 0000000..abe4daa
--- /dev/null
@@ -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"
+       }
+}
index c755445b42d001e8c000ccbec6d0998effa1b777..8eed05c1ca105417f5ebf26291b00f5bb6158bf0 100644 (file)
@@ -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"
 
index d625d08350168e7c67d9f810c625fd30876dd172..d064ce631c946587b441ad1471ed0f174f81a8f4 100644 (file)
@@ -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"
 
index 6f5592ef0ebf3a4ef38ee0de60539e10ef352382..0b5e6776805a7d37d8f54ab8a0ae91beb2db0516 100644 (file)
@@ -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"