With the recursive descent parser that gccgo uses, I think
that it doesn't make sense to try to match a statement where a
statement is not expected. If the construct is not a
statement, you will just get bizarre error messages.
topexpr.go:9:1: error: expected declaration
topexpr.go:14:1: error: expected declaration
topexpr.go:19:1: error: expected declaration
R=rsc, r2
CC=golang-dev
https://golang.org/cl/
2175041
package main
-fmt.Printf("hello") // ERROR "non-declaration statement outside function body"
+fmt.Printf("hello") // ERROR "non-declaration statement outside function body|expected declaration"
func main() {
}
-x++ // ERROR "non-declaration statement outside function body"
+x++ // ERROR "non-declaration statement outside function body|expected declaration"
func init() {
}
-x,y := 1, 2 // ERROR "non-declaration statement outside function body"
+x,y := 1, 2 // ERROR "non-declaration statement outside function body|expected declaration"