Fixes #14321.
Change-Id: I9c92c767b01cf7938c4808a8fef9f2936fc667bc
Reviewed-on: https://go-review.googlesource.com/106119
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
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)
}
--- /dev/null
+// 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"