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:
parent
2aafad25b4
commit
7dd90621f8
@ -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
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