For #67547.
Fixes #67683.
Change-Id: I9487820ab4e2bd257d253a7016df45729b29f836
Reviewed-on: https://go-review.googlesource.com/c/go/+/588855
Auto-Submit: Robert Griesemer <gri@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
}
var what string
switch t := x.typ.(type) {
- case *Named:
+ case *Alias, *Named:
if isGeneric(t) {
what = "type"
}
}
var what string
switch t := x.typ.(type) {
- case *Named:
+ case *Alias, *Named:
if isGeneric(t) {
what = "type"
}
--- /dev/null
+// -goexperiment=aliastypeparams -gotypesalias=1
+
+// Copyright 2024 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.
+
+package p
+
+type A[P any] func()
+
+// alias signature types
+type B[P any] = func()
+type C[P any] = B[P]
+
+var _ = A /* ERROR "cannot use generic type A without instantiation" */ (nil)
+
+// generic alias signature types must be instantiated before use
+var _ = B /* ERROR "cannot use generic type B without instantiation" */ (nil)
+var _ = C /* ERROR "cannot use generic type C without instantiation" */ (nil)