Commit a587d9a7 authored by Russ Cox's avatar Russ Cox

multiple return in := bug

R=ken
OCL=32253
CL=32253
parent 059bbdd3
......@@ -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);
......
......@@ -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;
......
// 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"
}
......@@ -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)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment