mirror of
https://github.com/golang/go
synced 2024-11-21 21:54:40 -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:
parent
2aafad25b4
commit
7dd90621f8
@ -1303,6 +1303,14 @@ addmethod(Sym *sf, Type *t, int local)
|
||||
}
|
||||
|
||||
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->type = t;
|
||||
|
13
test/fixedbugs/bug416.go
Normal file
13
test/fixedbugs/bug416.go
Normal 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"
|
Loading…
Reference in New Issue
Block a user