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:
Dominik Honnef 2014-01-21 22:44:54 -05:00 committed by Russ Cox
parent f00af3da1c
commit 062ae45711
2 changed files with 22 additions and 1 deletions

View file

@ -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;

View 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"
}