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)
|
buf.WriteString(intro)
|
||||||
WriteType(&buf, x.typ, qf)
|
WriteType(&buf, x.typ, qf)
|
||||||
if tpar, _ := x.typ.(*TypeParam); tpar != nil {
|
if tpar, _ := Unalias(x.typ).(*TypeParam); tpar != nil {
|
||||||
buf.WriteString(" constrained by ")
|
buf.WriteString(" constrained by ")
|
||||||
WriteType(&buf, tpar.bound, qf) // do not compute interface type sets here
|
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.
|
// 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)
|
buf.WriteString(intro)
|
||||||
WriteType(&buf, x.typ, qf)
|
WriteType(&buf, x.typ, qf)
|
||||||
if tpar, _ := x.typ.(*TypeParam); tpar != nil {
|
if tpar, _ := Unalias(x.typ).(*TypeParam); tpar != nil {
|
||||||
buf.WriteString(" constrained by ")
|
buf.WriteString(" constrained by ")
|
||||||
WriteType(&buf, tpar.bound, qf) // do not compute interface type sets here
|
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.
|
// 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
|
_ = 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.
|
// Test case for go.dev/issue/67540.
|
||||||
func _() {
|
func _() {
|
||||||
type (
|
type (
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue