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>
}
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.
}
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.
_ = 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 (