mirror of
https://github.com/golang/go
synced 2024-11-15 00:30:31 -07:00
go/types, types2: report error when using uninstantiated signature alias
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>
This commit is contained in:
parent
ee29dbe43e
commit
13c49096fd
@ -1013,7 +1013,7 @@ func (check *Checker) nonGeneric(T *target, x *operand) {
|
||||
}
|
||||
var what string
|
||||
switch t := x.typ.(type) {
|
||||
case *Named:
|
||||
case *Alias, *Named:
|
||||
if isGeneric(t) {
|
||||
what = "type"
|
||||
}
|
||||
|
@ -998,7 +998,7 @@ func (check *Checker) nonGeneric(T *target, x *operand) {
|
||||
}
|
||||
var what string
|
||||
switch t := x.typ.(type) {
|
||||
case *Named:
|
||||
case *Alias, *Named:
|
||||
if isGeneric(t) {
|
||||
what = "type"
|
||||
}
|
||||
|
19
src/internal/types/testdata/fixedbugs/issue67683.go
vendored
Normal file
19
src/internal/types/testdata/fixedbugs/issue67683.go
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
// -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)
|
Loading…
Reference in New Issue
Block a user