mirror of
https://github.com/golang/go
synced 2024-11-25 06:07:58 -07:00
gc: fix return variable named _
Fixes #1712. R=ken2 CC=golang-dev https://golang.org/cl/4445055
This commit is contained in:
parent
7879d3118c
commit
815a1b84c7
@ -560,6 +560,7 @@ funcargs(Node *nt)
|
||||
{
|
||||
Node *n;
|
||||
NodeList *l;
|
||||
int gen;
|
||||
|
||||
if(nt->op != OTFUNC)
|
||||
fatal("funcargs %O", nt->op);
|
||||
@ -589,6 +590,7 @@ funcargs(Node *nt)
|
||||
}
|
||||
|
||||
// declare the out arguments.
|
||||
gen = 0;
|
||||
for(l=nt->rlist; l; l=l->next) {
|
||||
n = l->n;
|
||||
if(n->op != ODCLFIELD)
|
||||
@ -596,6 +598,11 @@ funcargs(Node *nt)
|
||||
if(n->left != N) {
|
||||
n->left->op = ONAME;
|
||||
n->left->ntype = n->right;
|
||||
if(isblank(n->left)) {
|
||||
// Give it a name so we can assign to it during return.
|
||||
snprint(namebuf, sizeof(namebuf), ".anon%d", gen++);
|
||||
n->left->sym = lookup(namebuf);
|
||||
}
|
||||
declare(n->left, PPARAMOUT);
|
||||
}
|
||||
}
|
||||
|
36
test/fixedbugs/bug331.go
Normal file
36
test/fixedbugs/bug331.go
Normal file
@ -0,0 +1,36 @@
|
||||
// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug331
|
||||
|
||||
// Copyright 2011 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
|
||||
|
||||
import "os"
|
||||
|
||||
func f() (_ string, x float64, err os.Error) {
|
||||
return
|
||||
}
|
||||
|
||||
func g() (_ string, x float64, err os.Error) {
|
||||
return "hello", 3.14, os.EOF
|
||||
}
|
||||
|
||||
var _ func() (string, float64, os.Error) = f
|
||||
var _ func() (string, float64, os.Error) = g
|
||||
|
||||
func main() {
|
||||
x, y, z := g()
|
||||
if x != "hello" || y != 3.14 || z != os.EOF {
|
||||
println("wrong", x, len(x), y, z)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
issue 1712
|
||||
|
||||
bug331.go:12: cannot use "hello" (type string) as type float64 in assignment
|
||||
bug331.go:12: cannot use 0 (type float64) as type os.Error in assignment:
|
||||
float64 does not implement os.Error (missing String method)
|
||||
bug331.go:12: error in shape across RETURN
|
||||
*/
|
Loading…
Reference in New Issue
Block a user