diff options
author | Daniel Morsing <daniel.morsing@gmail.com> | 2013-03-20 22:18:20 +0100 |
---|---|---|
committer | Daniel Morsing <daniel.morsing@gmail.com> | 2013-03-20 22:18:20 +0100 |
commit | 8c97b0c80f4610ca01845174552cf0dacea0d129 (patch) | |
tree | 195da759b3ee615c081609a8251cf809a2232f96 /src/cmd/gc | |
parent | b4fc15a05ccc636f8b71daab34089c8c81c34ab5 (diff) | |
download | go-8c97b0c80f4610ca01845174552cf0dacea0d129.tar.gz |
cmd/gc: reject methods on non-locals, even if symbol exists
Fixes issue 5089.
R=golang-dev, rsc
CC=golang-dev
https://codereview.appspot.com/7767044
Diffstat (limited to 'src/cmd/gc')
-rw-r--r-- | src/cmd/gc/dcl.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/cmd/gc/dcl.c b/src/cmd/gc/dcl.c index 45945467b..429f212e7 100644 --- a/src/cmd/gc/dcl.c +++ b/src/cmd/gc/dcl.c @@ -1380,6 +1380,12 @@ addmethod(Sym *sf, Type *t, int local, int nointerface) } } + if(local && !pa->local) { + // defining method on non-local type. + yyerror("cannot define new methods on non-local type %T", pa); + return; + } + n = nod(ODCLFIELD, newname(sf), N); n->type = t; @@ -1395,12 +1401,6 @@ addmethod(Sym *sf, Type *t, int local, int nointerface) return; } - if(local && !pa->local) { - // defining method on non-local type. - yyerror("cannot define new methods on non-local type %T", pa); - return; - } - f = structfield(n); f->nointerface = nointerface; |