1
0
mirror of https://github.com/golang/go synced 2024-11-25 09:07:58 -07:00

gc: diagnose field+method of same name

Fixes #2828.

R=ken2
CC=golang-dev
https://golang.org/cl/5653065
This commit is contained in:
Russ Cox 2012-02-11 01:21:12 -05:00
parent 2aafad25b4
commit 7dd90621f8
2 changed files with 21 additions and 0 deletions

View File

@ -1303,6 +1303,14 @@ addmethod(Sym *sf, Type *t, int local)
} }
pa = f; pa = f;
if(pa->etype == TSTRUCT) {
for(f=pa->type; f; f=f->down) {
if(f->sym == sf) {
yyerror("type %T has both field and method named %S", pa, sf);
return;
}
}
}
n = nod(ODCLFIELD, newname(sf), N); n = nod(ODCLFIELD, newname(sf), N);
n->type = t; n->type = t;

13
test/fixedbugs/bug416.go Normal file
View File

@ -0,0 +1,13 @@
// errchk $G $D/$F.go
// Copyright 2012 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.
package p
type T struct {
X int
}
func (t *T) X() {} // ERROR "type T has both field and method named X"