mirror of
https://github.com/golang/go
synced 2024-11-24 09:00:13 -07:00
cmd/compile/internal/types2: adjust printing of type parameter in error
For constraint type inference failures where the type parameter doesn't match the constraint, print the type parameter rather than its type name object. This provides more flexibility for improving the error message down the road. Change-Id: I188871d6f26a16cd96e59770966a1ec65607b128 Reviewed-on: https://go-review.googlesource.com/c/go/+/360514 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
d39c873966
commit
599de4b2c3
@ -378,7 +378,6 @@ func (check *Checker) inferB(tparams []*TypeParam, targs []Type) (types []Type,
|
||||
|
||||
// If a constraint has a structural type, unify the corresponding type parameter with it.
|
||||
for _, tpar := range tparams {
|
||||
typ := tpar
|
||||
sbound := structure(tpar)
|
||||
if sbound != nil {
|
||||
// If the structural type is the underlying type of a single
|
||||
@ -386,8 +385,10 @@ func (check *Checker) inferB(tparams []*TypeParam, targs []Type) (types []Type,
|
||||
if named, _ := tpar.singleType().(*Named); named != nil {
|
||||
sbound = named
|
||||
}
|
||||
if !u.unify(typ, sbound) {
|
||||
check.errorf(tpar.obj, "%s does not match %s", tpar.obj, sbound)
|
||||
if !u.unify(tpar, sbound) {
|
||||
// TODO(gri) improve error message by providing the type arguments
|
||||
// which we know already
|
||||
check.errorf(tpar.obj, "%s does not match %s", tpar, sbound)
|
||||
return nil, 0
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
package issue45985
|
||||
|
||||
// TODO(gri): this error should be on app[int] below.
|
||||
func app[S /* ERROR "type S S does not match" */ interface{ ~[]T }, T any](s S, e T) S {
|
||||
func app[S /* ERROR "S does not match" */ interface{ ~[]T }, T any](s S, e T) S {
|
||||
return append(s, e)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user