From: Robert Griesemer Date: Thu, 18 Apr 2024 01:40:27 +0000 (-0700) Subject: go/types: track gotypesalias non-default behavior X-Git-Tag: go1.23rc1~594 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e718aee5f50b06d73ad4e679d0862267147347b0;p=gostls13.git 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 LUCI-TryBot-Result: Go LUCI Reviewed-by: Robert Griesemer Reviewed-by: Robert Findley --- 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.