diff options
| author | Michael Stapelberg <michael@stapelberg.de> | 2013-08-13 13:44:32 +0200 |
|---|---|---|
| committer | Michael Stapelberg <michael@stapelberg.de> | 2013-08-13 13:44:32 +0200 |
| commit | 436bdaf6f17a623e324c52ecc17a6da0ebf3ea41 (patch) | |
| tree | bac2f35f921ef1c0168cd617bb64ccac31b6fd2d /src/cmd/gc/closure.c | |
| parent | 05cc04cd5e3b09971b8de97720870cc6772a1af9 (diff) | |
| parent | b901efe83e212f0c34c769c079e41373da12d723 (diff) | |
| download | golang-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.c | 7 |
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; } |
