mirror of
https://github.com/golang/go
synced 2024-11-19 21:34:45 -07:00
cmd/compile/internal/syntax: better error msg for some 'if' statements
R=go1.11 A common error is to write '=' instead of '==' inside the condition of a simple 'if' statement: if x = 0 { ... } Highlight the fact that we have an assignment in the error message to prevent further confusion. Fixes #23385. Change-Id: I1552050fd6da927bd12a1be0977bd2e98eca5885 Reviewed-on: https://go-review.googlesource.com/87316 Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
ac45cb9aa0
commit
be9a1774f2
@ -170,9 +170,9 @@ func (p *parser) syntax_error_at(pos src.Pos, msg string) {
|
|||||||
switch {
|
switch {
|
||||||
case msg == "":
|
case msg == "":
|
||||||
// nothing to do
|
// nothing to do
|
||||||
case strings.HasPrefix(msg, "in"), strings.HasPrefix(msg, "at"), strings.HasPrefix(msg, "after"):
|
case strings.HasPrefix(msg, "in "), strings.HasPrefix(msg, "at "), strings.HasPrefix(msg, "after "):
|
||||||
msg = " " + msg
|
msg = " " + msg
|
||||||
case strings.HasPrefix(msg, "expecting"):
|
case strings.HasPrefix(msg, "expecting "):
|
||||||
msg = ", " + msg
|
msg = ", " + msg
|
||||||
default:
|
default:
|
||||||
// plain error - we don't care about current token
|
// plain error - we don't care about current token
|
||||||
@ -1844,7 +1844,15 @@ done:
|
|||||||
case *ExprStmt:
|
case *ExprStmt:
|
||||||
cond = s.X
|
cond = s.X
|
||||||
default:
|
default:
|
||||||
p.syntax_error(fmt.Sprintf("%s used as value", String(s)))
|
// A common syntax error is to write '=' instead of '==',
|
||||||
|
// which turns an expression into an assignment. Provide
|
||||||
|
// a more explicit error message in that case to prevent
|
||||||
|
// further confusion.
|
||||||
|
str := String(s)
|
||||||
|
if as, ok := s.(*AssignStmt); ok && as.Op == 0 {
|
||||||
|
str = "assignment " + str
|
||||||
|
}
|
||||||
|
p.syntax_error(fmt.Sprintf("%s used as value", str))
|
||||||
}
|
}
|
||||||
|
|
||||||
p.xnest = outer
|
p.xnest = outer
|
||||||
|
Loading…
Reference in New Issue
Block a user