From 1d897f4ee9a1ec29f3eb398d258a6f1b3251054f Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 5 Feb 2009 15:22:49 -0800 Subject: bug064 make f(g()) work when g returns multiple args with names different than f expects. func swap(a, b int) (c, d int) { return b, a } swap(swap(1,2)) R=ken OCL=24474 CL=24476 --- src/cmd/gc/subr.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/cmd/gc/subr.c') diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index 593d07cd3..2df3fc168 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -1742,6 +1742,25 @@ eqtype(Type *t1, Type *t2, int d) return eqtype(t1->type, t2->type, d+1); } +int +eqtypenoname(Type *t1, Type *t2) +{ + if(t1 == T || t2 == T || t1->etype != TSTRUCT || t2->etype != TSTRUCT) + return eqtype(t1, t2, 0); + + + t1 = t1->type; + t2 = t2->type; + for(;;) { + if(!eqtype(t1, t2, 1)) + return 0; + if(t1 == T) + return 1; + t1 = t1->down; + t2 = t2->down; + } +} + static int subtype(Type **stp, Type *t, int d) { -- cgit v1.2.3