mirror of
https://github.com/golang/go
synced 2024-11-23 05:30:07 -07:00
cmd/compile: better error message when referring to ambiguous method/field
Fixes #14321. Change-Id: I9c92c767b01cf7938c4808a8fef9f2936fc667bc Reviewed-on: https://go-review.googlesource.com/106119 Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
535ad8efb8
commit
3d501df441
@ -2359,6 +2359,8 @@ func typecheckMethodExpr(n *Node) *Node {
|
||||
if m == nil {
|
||||
if lookdot1(n, s, t, ms, 1) != nil {
|
||||
yyerror("%v undefined (cannot refer to unexported method %v)", n, s)
|
||||
} else if _, ambig := dotpath(s, t, nil, false); ambig {
|
||||
yyerror("%v undefined (ambiguous selector)", n) // method or field
|
||||
} else {
|
||||
yyerror("%v undefined (type %v has no method %v)", n, t, s)
|
||||
}
|
||||
|
33
test/fixedbugs/issue14321.go
Normal file
33
test/fixedbugs/issue14321.go
Normal file
@ -0,0 +1,33 @@
|
||||
// errorcheck
|
||||
|
||||
// Copyright 2018 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.
|
||||
|
||||
// Verify that error message reports _ambiguous_ method.
|
||||
|
||||
package p
|
||||
|
||||
type A struct{
|
||||
H int
|
||||
}
|
||||
|
||||
func (A) F() {}
|
||||
func (A) G() {}
|
||||
|
||||
type B struct{
|
||||
G int
|
||||
H int
|
||||
}
|
||||
|
||||
func (B) F() {}
|
||||
|
||||
type C struct {
|
||||
A
|
||||
B
|
||||
}
|
||||
|
||||
var _ = C.F // ERROR "ambiguous selector"
|
||||
var _ = C.G // ERROR "ambiguous selector"
|
||||
var _ = C.H // ERROR "ambiguous selector"
|
||||
var _ = C.I // ERROR "no method I"
|
Loading…
Reference in New Issue
Block a user