Commit 7c3694c4 authored by Daniel Morsing's avatar Daniel Morsing

cmd/gc: reject methods on non-locals, even if symbol exists

Fixes #5089.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7767044
parent d3c758d7
......@@ -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;
......
// errorcheck
// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// issue 5089: gc allows methods on non-locals if symbol already exists
package p
import "bufio"
func (b *bufio.Reader) Buffered() int { // ERROR "non-local"
return -1
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment