mirror of
https://github.com/golang/go
synced 2024-11-19 04:44:41 -07:00
cmd/compile/internal/syntax: avoid follow-up error for incorrect if statement
This is a follow-up on https://go-review.googlesource.com/36470 and leads to a more stable fix. The above CL relied on filtering of multiple errors on the same line to avoid more than one error for an `if` statement of the form `if a := 10 {}`. This CL avoids the secondary error ("missing condition in if statement") in the first place. For #18915. Change-Id: I8517f485cc2305965276c17d8f8797d61ef9e999 Reviewed-on: https://go-review.googlesource.com/36479 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
6b742b2f84
commit
53c6ac5419
@ -1700,6 +1700,8 @@ func (p *parser) stmtBody(context string) []Stmt {
|
|||||||
return body
|
return body
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var dummyCond = &Name{Value: "false"}
|
||||||
|
|
||||||
func (p *parser) header(forStmt bool) (init SimpleStmt, cond Expr, post SimpleStmt) {
|
func (p *parser) header(forStmt bool) (init SimpleStmt, cond Expr, post SimpleStmt) {
|
||||||
if p.tok == _Lbrace {
|
if p.tok == _Lbrace {
|
||||||
return
|
return
|
||||||
@ -1746,12 +1748,8 @@ func (p *parser) header(forStmt bool) (init SimpleStmt, cond Expr, post SimpleSt
|
|||||||
case *ExprStmt:
|
case *ExprStmt:
|
||||||
cond = s.X
|
cond = s.X
|
||||||
default:
|
default:
|
||||||
// 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.syntax_error(fmt.Sprintf("%s used as value", String(s)))
|
||||||
|
cond = dummyCond // avoid follow-up error for if statements
|
||||||
}
|
}
|
||||||
|
|
||||||
p.xnest = outer
|
p.xnest = outer
|
||||||
|
Loading…
Reference in New Issue
Block a user