mirror of
https://github.com/golang/go
synced 2024-11-11 21:40:21 -07:00
cmd/compile/internal/syntax: make a parser error "1.7 compliant"
For code such as if a := 10 { ... the 1.7 compiler reported a := 10 used as value while the 1.8 compiler reported invalid condition, tag, or type switch guard Changed the error message to match the 1.7 compiler. Fixes #18915. Change-Id: I01308862e461922e717f9f8295a9db53d5a914eb Reviewed-on: https://go-review.googlesource.com/36470 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
6a29440dcc
commit
3b68a64769
@ -1746,7 +1746,12 @@ func (p *parser) header(forStmt bool) (init SimpleStmt, cond Expr, post SimpleSt
|
||||
case *ExprStmt:
|
||||
cond = s.X
|
||||
default:
|
||||
p.error("invalid condition, tag, or type switch guard")
|
||||
// Not obviously a syntax error but by making it one, we get
|
||||
// automatic filtering of multiple syntax error messages per
|
||||
// line in the compiler. This avoids the follow-up error
|
||||
// "missing condition in if statement" for an if statement
|
||||
// (minimal fix for #18915).
|
||||
p.syntax_error(fmt.Sprintf("%s used as value", String(s)))
|
||||
}
|
||||
|
||||
p.xnest = outer
|
||||
|
21
test/fixedbugs/issue18915.go
Normal file
21
test/fixedbugs/issue18915.go
Normal file
@ -0,0 +1,21 @@
|
||||
// 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.
|
||||
|
||||
// Make sure error message for invalid conditions
|
||||
// or tags are consistent with earlier Go versions.
|
||||
|
||||
package p
|
||||
|
||||
func _() {
|
||||
if a := 10 { // ERROR "a := 10 used as value"
|
||||
}
|
||||
|
||||
for b := 10 { // ERROR "b := 10 used as value"
|
||||
}
|
||||
|
||||
switch c := 10 { // ERROR "c := 10 used as value"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user