mirror of
https://github.com/golang/go
synced 2024-10-14 11:53:56 +00:00
cmd/gc: do not typecheck nil types in multiple assignment
Fixes #6572. LGTM=rsc, daniel.morsing, rsc R=golang-codereviews, bradfitz, minux.ma, iant, rsc, gobot, daniel.morsing CC=golang-codereviews https://golang.org/cl/14516055
This commit is contained in:
parent
f00af3da1c
commit
062ae45711
|
@ -2814,7 +2814,7 @@ typecheckas2(Node *n)
|
|||
n->op = OAS2FUNC;
|
||||
t = structfirst(&s, &r->type);
|
||||
for(ll=n->list; ll; ll=ll->next) {
|
||||
if(ll->n->type != T)
|
||||
if(t->type != T && ll->n->type != T)
|
||||
checkassignto(t->type, ll->n);
|
||||
if(ll->n->defn == n && ll->n->ntype == N)
|
||||
ll->n->type = t->type;
|
||||
|
|
21
test/fixedbugs/issue6572.go
Normal file
21
test/fixedbugs/issue6572.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
// errorcheck
|
||||
|
||||
// Copyright 2014 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 foo() (T, T) { // ERROR "undefined"
|
||||
return 0, 0
|
||||
}
|
||||
|
||||
func bar() (T, string, T) { // ERROR "undefined"
|
||||
return 0, "", 0
|
||||
}
|
||||
|
||||
func main() {
|
||||
var x, y, z int
|
||||
x, y = foo()
|
||||
x, y, z = bar() // ERROR "cannot (use type|assign) string"
|
||||
}
|
Loading…
Reference in a new issue