mirror of https://github.com/golang/go.git
go/types, types2: add missing Unalias call to type string functionality
For #67547. Change-Id: I999cd31f9a01f91e7984b4e7012c81e8bd9c6b06 Reviewed-on: https://go-review.googlesource.com/c/go/+/587940 Reviewed-by: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com> Reviewed-by: Robert Findley <rfindley@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
acc93dac83
commit
13e3068b9c
|
|
@ -186,7 +186,7 @@ func operandString(x *operand, qf Qualifier) string {
|
|||
}
|
||||
buf.WriteString(intro)
|
||||
WriteType(&buf, x.typ, qf)
|
||||
if tpar, _ := x.typ.(*TypeParam); tpar != nil {
|
||||
if tpar, _ := Unalias(x.typ).(*TypeParam); tpar != nil {
|
||||
buf.WriteString(" constrained by ")
|
||||
WriteType(&buf, tpar.bound, qf) // do not compute interface type sets here
|
||||
// If we have the type set and it's empty, say so for better error messages.
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ func operandString(x *operand, qf Qualifier) string {
|
|||
}
|
||||
buf.WriteString(intro)
|
||||
WriteType(&buf, x.typ, qf)
|
||||
if tpar, _ := x.typ.(*TypeParam); tpar != nil {
|
||||
if tpar, _ := Unalias(x.typ).(*TypeParam); tpar != nil {
|
||||
buf.WriteString(" constrained by ")
|
||||
WriteType(&buf, tpar.bound, qf) // do not compute interface type sets here
|
||||
// If we have the type set and it's empty, say so for better error messages.
|
||||
|
|
|
|||
|
|
@ -77,6 +77,13 @@ func _[P []int | struct{}]() {
|
|||
_ = a
|
||||
}
|
||||
|
||||
func _[P any]() {
|
||||
type A = P
|
||||
var x A
|
||||
// keep "constrained by" for aliased type parameters in error messages
|
||||
var _ int = x // ERRORx `cannot use x \(variable of type (A|P) constrained by any\) as int value in variable declaration`
|
||||
}
|
||||
|
||||
// Test case for go.dev/issue/67540.
|
||||
func _() {
|
||||
type (
|
||||
|
|
|
|||
Loading…
Reference in New Issue