1
0
mirror of https://github.com/golang/go synced 2024-11-21 17:54:39 -07:00

multiple return in := bug

R=ken
OCL=32253
CL=32253
This commit is contained in:
Russ Cox 2009-07-27 16:59:10 -07:00
parent 059bbdd340
commit a587d9a73f
4 changed files with 33 additions and 0 deletions

View File

@ -1112,6 +1112,15 @@ Tpretty(Fmt *fp, Type *t)
return fmtprint(fp, " }");
case TSTRUCT:
if(t->funarg) {
fmtprint(fp, "(");
for(t1=t->type; t1!=T; t1=t1->down) {
fmtprint(fp, "%T", t1);
if(t1->down)
fmtprint(fp, ", ");
}
return fmtprint(fp, ")");
}
fmtprint(fp, "struct {");
for(t1=t->type; t1!=T; t1=t1->down) {
fmtprint(fp, " %T", t1);

View File

@ -3673,6 +3673,10 @@ old2new(Node *n, Type *t, NodeList **init)
yyerror("left side of := must be a name");
return n;
}
if(t != T && t->funarg) {
yyerror("use of multi func value as single value in :=");
return n;
}
l = newname(n->sym);
dodclvar(l, t, init);
return l;

14
test/fixedbugs/bug175.go Normal file
View File

@ -0,0 +1,14 @@
// errchk $G $D/$F.go
// Copyright 2009 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 f() (int, bool) { return 0, true }
func main() {
x, y := f(), 2; // ERROR "multi"
}

View File

@ -235,3 +235,9 @@ fixedbugs/bug131.go:7: illegal types for operand: AS
fixedbugs/bug133.dir/bug2.go:11: undefined: bug0.T field i
fixedbugs/bug133.dir/bug2.go:11: illegal types for operand: RETURN
int
=========== fixedbugs/bug175.go
fixedbugs/bug175.go:8: use of multi func value as single value in :=
fixedbugs/bug175.go:8: undefined: x
fixedbugs/bug175.go:8: illegal types for operand: AS
(int, bool)