aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2024-04-17 18:40:27 -0700
committerGopher Robot <gobot@golang.org>2024-04-18 14:10:47 +0000
commite718aee5f50b06d73ad4e679d0862267147347b0 (patch)
treeae1efb2037dd7e27ec53d1c78eac7e86bb9fb8e0
parent9101bf19165ecde1967a0163d2fafa168e40ac6d (diff)
downloadgo-e718aee5f50b06d73ad4e679d0862267147347b0.tar.xz
go/types: track gotypesalias non-default behavior
Fixes #66216. Change-Id: I04d7389e5712b35db078844ce424e10f5b96156c Reviewed-on: https://go-review.googlesource.com/c/go/+/579936 Auto-Submit: Robert Griesemer <gri@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Robert Griesemer <gri@google.com> Reviewed-by: Robert Findley <rfindley@google.com>
-rw-r--r--src/go/types/decl.go7
-rw-r--r--src/internal/godebugs/table.go2
-rw-r--r--src/runtime/metrics/doc.go4
3 files changed, 12 insertions, 1 deletions
diff --git a/src/go/types/decl.go b/src/go/types/decl.go
index 679dc1a136..1275e4f8d2 100644
--- a/src/go/types/decl.go
+++ b/src/go/types/decl.go
@@ -607,6 +607,13 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *ast.TypeSpec, def *TypeName
alias.fromRHS = rhs
Unalias(alias) // resolve alias.actual
} else {
+ // With Go1.23, the default behavior is to use Alias nodes,
+ // reflected by check.enableAlias. Signal non-default behavior.
+ //
+ // TODO(gri) Testing runs tests in both modes. Do we need to exclude
+ // tracking of non-default behavior for tests?
+ gotypesalias.IncNonDefault()
+
if !versionErr && tparam0 != nil {
check.error(tdecl, UnsupportedFeature, "generic type alias requires GODEBUG=gotypesalias=1 or unset")
versionErr = true
diff --git a/src/internal/godebugs/table.go b/src/internal/godebugs/table.go
index e9e043df4c..a95c8f2f94 100644
--- a/src/internal/godebugs/table.go
+++ b/src/internal/godebugs/table.go
@@ -30,7 +30,7 @@ var All = []Info{
{Name: "gocachehash", Package: "cmd/go"},
{Name: "gocachetest", Package: "cmd/go"},
{Name: "gocacheverify", Package: "cmd/go"},
- {Name: "gotypesalias", Package: "go/types", Changed: 23, Old: "0", Opaque: true}, // bug #66216: remove Opaque
+ {Name: "gotypesalias", Package: "go/types", Changed: 23, Old: "0"},
{Name: "http2client", Package: "net/http"},
{Name: "http2debug", Package: "net/http", Opaque: true},
{Name: "http2server", Package: "net/http"},
diff --git a/src/runtime/metrics/doc.go b/src/runtime/metrics/doc.go
index deb993241d..fbbeb1a475 100644
--- a/src/runtime/metrics/doc.go
+++ b/src/runtime/metrics/doc.go
@@ -246,6 +246,10 @@ Below is the full list of supported metrics, ordered lexicographically.
The number of non-default behaviors executed by the cmd/go
package due to a non-default GODEBUG=gocacheverify=... setting.
+ /godebug/non-default-behavior/gotypesalias:events
+ The number of non-default behaviors executed by the go/types
+ package due to a non-default GODEBUG=gotypesalias=... setting.
+
/godebug/non-default-behavior/http2client:events
The number of non-default behaviors executed by the net/http
package due to a non-default GODEBUG=http2client=... setting.