Commit 3d501df4 authored by Robert Griesemer's avatar Robert Griesemer

cmd/compile: better error message when referring to ambiguous method/field

Fixes #14321.

Change-Id: I9c92c767b01cf7938c4808a8fef9f2936fc667bc
Reviewed-on: https://go-review.googlesource.com/106119Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
parent 535ad8ef
......@@ -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)
}
......
// 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"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment