summaryrefslogtreecommitdiff
path: root/src/cmd/gc
diff options
context:
space:
mode:
authorDaniel Morsing <daniel.morsing@gmail.com>2013-03-20 22:18:20 +0100
committerDaniel Morsing <daniel.morsing@gmail.com>2013-03-20 22:18:20 +0100
commit8c97b0c80f4610ca01845174552cf0dacea0d129 (patch)
tree195da759b3ee615c081609a8251cf809a2232f96 /src/cmd/gc
parentb4fc15a05ccc636f8b71daab34089c8c81c34ab5 (diff)
downloadgo-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.c12
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;