Skip to content

Commit d68d485

Browse files
griesemergopherbot
authored andcommitted
go/types, types2: use GOEXPERIMENT to enable alias type parameters
For #46477. Change-Id: Ia3558f9d2bf43fdd9e3618bd9f800d268e13b367 Reviewed-on: https://go-review.googlesource.com/c/go/+/586956 Reviewed-by: Carlos Amedee <[email protected]> Reviewed-by: Robert Findley <[email protected]> Reviewed-by: Robert Griesemer <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Auto-Submit: Robert Griesemer <[email protected]>
1 parent c3591cb commit d68d485

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

src/cmd/compile/internal/types2/decl.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"cmd/compile/internal/syntax"
99
"fmt"
1010
"go/constant"
11+
"internal/buildcfg"
1112
. "internal/types/errors"
1213
)
1314

@@ -522,6 +523,10 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *TypeN
522523

523524
// handle type parameters even if not allowed (Alias type is supported)
524525
if tparam0 != nil {
526+
if !versionErr && !buildcfg.Experiment.AliasTypeParams {
527+
check.error(tdecl, UnsupportedFeature, "generic type alias requires GOEXPERIMENT=aliastypeparams")
528+
versionErr = true
529+
}
525530
check.openScope(tdecl, "type parameters")
526531
defer check.closeScope()
527532
check.collectTypeParams(&alias.tparams, tdecl.TParamList)

src/go/types/decl.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"go/ast"
1010
"go/constant"
1111
"go/token"
12+
"internal/buildcfg"
1213
. "internal/types/errors"
1314
)
1415

@@ -597,6 +598,10 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *ast.TypeSpec, def *TypeName
597598

598599
// handle type parameters even if not allowed (Alias type is supported)
599600
if tparam0 != nil {
601+
if !versionErr && !buildcfg.Experiment.AliasTypeParams {
602+
check.error(tdecl, UnsupportedFeature, "generic type alias requires GOEXPERIMENT=aliastypeparams")
603+
versionErr = true
604+
}
600605
check.openScope(tdecl, "type parameters")
601606
defer check.closeScope()
602607
check.collectTypeParams(&alias.tparams, tdecl.TypeParams)

src/internal/types/testdata/spec/typeAliases1.23b.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// -lang=go1.23 -gotypesalias=1
1+
// -lang=go1.23 -gotypesalias=1 -goexperiment=aliastypeparams
22

33
// Copyright 2024 The Go Authors. All rights reserved.
44
// Use of this source code is governed by a BSD-style

0 commit comments

Comments
 (0)