]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: track gotypesalias non-default behavior
authorRobert Griesemer <gri@golang.org>
Thu, 18 Apr 2024 01:40:27 +0000 (18:40 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 18 Apr 2024 14:10:47 +0000 (14:10 +0000)
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>
src/go/types/decl.go
src/internal/godebugs/table.go
src/runtime/metrics/doc.go

index 679dc1a136394dc52e52fa6842f6178d1ef8f458..1275e4f8d22a565934182ba89e427391c649d868 100644 (file)
@@ -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
index e9e043df4c764301dcbdde1978d288d6a56f929c..a95c8f2f9434e80bd95ec492567bef73f9d00f56 100644 (file)
@@ -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"},
index deb993241d9785636f76d6dc48dbb4509f9ebc2a..fbbeb1a4754cb20f65e4345a88bc24a28b817986 100644 (file)
@@ -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.