summaryrefslogtreecommitdiff
path: root/src/cmd/gc/closure.c
diff options
context:
space:
mode:
authorMichael Stapelberg <michael@stapelberg.de>2013-08-13 13:44:32 +0200
committerMichael Stapelberg <michael@stapelberg.de>2013-08-13 13:44:32 +0200
commit436bdaf6f17a623e324c52ecc17a6da0ebf3ea41 (patch)
treebac2f35f921ef1c0168cd617bb64ccac31b6fd2d /src/cmd/gc/closure.c
parent05cc04cd5e3b09971b8de97720870cc6772a1af9 (diff)
parentb901efe83e212f0c34c769c079e41373da12d723 (diff)
downloadgolang-436bdaf6f17a623e324c52ecc17a6da0ebf3ea41.tar.gz
Merge tag 'upstream/1.1.2' into debian-sid
Upstream version 1.1.2
Diffstat (limited to 'src/cmd/gc/closure.c')
-rw-r--r--src/cmd/gc/closure.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cmd/gc/closure.c b/src/cmd/gc/closure.c
index d81c5281d..996504a11 100644
--- a/src/cmd/gc/closure.c
+++ b/src/cmd/gc/closure.c
@@ -280,7 +280,7 @@ typecheckpartialcall(Node *fn, Node *sym)
static Node*
makepartialcall(Node *fn, Type *t0, Node *meth)
{
- Node *ptr, *n, *fld, *call, *xtype, *xfunc, *cv;
+ Node *ptr, *n, *fld, *call, *xtype, *xfunc, *cv, *savecurfn;
Type *rcvrtype, *basetype, *t;
NodeList *body, *l, *callargs, *retargs;
char *p;
@@ -304,6 +304,9 @@ makepartialcall(Node *fn, Type *t0, Node *meth)
if(sym->flags & SymUniq)
return sym->def;
sym->flags |= SymUniq;
+
+ savecurfn = curfn;
+ curfn = N;
xtype = nod(OTFUNC, N, N);
i = 0;
@@ -311,6 +314,7 @@ makepartialcall(Node *fn, Type *t0, Node *meth)
callargs = nil;
ddd = 0;
xfunc = nod(ODCLFUNC, N, N);
+ curfn = xfunc;
for(t = getinargx(t0)->type; t; t = t->down) {
snprint(namebuf, sizeof namebuf, "a%d", i++);
n = newname(lookup(namebuf));
@@ -385,6 +389,7 @@ makepartialcall(Node *fn, Type *t0, Node *meth)
typecheck(&xfunc, Etop);
sym->def = xfunc;
xtop = list(xtop, xfunc);
+ curfn = savecurfn;
return xfunc;
}