mirror of
https://github.com/golang/go
synced 2024-10-14 20:05:36 +00:00
cmd/compile: return assignment mismatch error in var declarations
Some var declarations return "extra expression" or "missing expression" errors when they should return “assignment mismatch” instead. Change the returned error messages to exhibit the desired behavior. Fixes #30085. Change-Id: I7189355fbb0f976d70100779db4f81a9ae64fb11 Reviewed-on: https://go-review.googlesource.com/c/go/+/161558 Reviewed-by: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
e9d1273997
commit
60736733ec
|
@ -166,11 +166,12 @@ func variter(vl []*Node, t *Node, el []*Node) []*Node {
|
|||
return append(init, as2)
|
||||
}
|
||||
|
||||
nel := len(el)
|
||||
for _, v := range vl {
|
||||
var e *Node
|
||||
if doexpr {
|
||||
if len(el) == 0 {
|
||||
yyerror("missing expression in var declaration")
|
||||
yyerror("assignment mismatch: %d variables but %d values", len(vl), nel)
|
||||
break
|
||||
}
|
||||
e = el[0]
|
||||
|
@ -194,7 +195,7 @@ func variter(vl []*Node, t *Node, el []*Node) []*Node {
|
|||
}
|
||||
|
||||
if len(el) != 0 {
|
||||
yyerror("extra expression in var declaration")
|
||||
yyerror("assignment mismatch: %d variables but %d values", len(vl), nel)
|
||||
}
|
||||
return init
|
||||
}
|
||||
|
|
12
test/fixedbugs/issue30085.go
Normal file
12
test/fixedbugs/issue30085.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
// errorcheck
|
||||
|
||||
// Copyright 2019 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() {
|
||||
var c, d = 1, 2, 3 // ERROR "assignment mismatch: 2 variables but 3 values"
|
||||
var e, f, g = 1, 2 // ERROR "assignment mismatch: 3 variables but 2 values"
|
||||
}
|
Loading…
Reference in a new issue