]> Cypherpunks repositories - gostls13.git/commitdiff
Revert "go/types, types2: track gotypesalias non-default behavior"
authorLasse Folger <lassefolger@google.com>
Wed, 17 Apr 2024 13:30:58 +0000 (13:30 +0000)
committerLasse Folger <lassefolger@google.com>
Wed, 17 Apr 2024 14:04:17 +0000 (14:04 +0000)
This reverts commit c51f6c62576ab3088a981b9cef90e413ac99e333.

Reason for revert: This breaks toolchain bootstrapping in Google. Root cause investigation is pending.

Error message is:

```
<unknown line number>: internal compiler error: panic: godebug: Value of name not listed in godebugs.All: gotypesalias
```

Change-Id: Ie3dff566a29b3b0846ebc8fe0a371c656a043a4c
Reviewed-on: https://go-review.googlesource.com/c/go/+/579575
Reviewed-by: Chressie Himpel <chressie@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
Auto-Submit: Lasse Folger <lassefolger@google.com>

src/cmd/compile/internal/types2/check.go
src/cmd/compile/internal/types2/check_test.go
src/cmd/compile/internal/types2/decl.go
src/go/types/check.go
src/go/types/check_test.go
src/go/types/decl.go
src/internal/godebugs/table.go
src/runtime/metrics/doc.go

index 17d1577ee1f2e0710bdc6d8dad320cbf58887ea8..cc723f20127e2c1af7270aa12c2eeb8c2f0df089 100644 (file)
@@ -102,12 +102,6 @@ type Checker struct {
        // If enableAlias is set, alias declarations produce an Alias type.
        // Otherwise the alias information is only in the type name, which
        // points directly to the actual (aliased) type.
-       // Starting with Go 1.23, enableAlias is set by default.
-       // Non-default behavior is tracked with gotypesalias.IncNonDefault()
-       // for each declaration of an alias type where enableAlias is not set.
-       //
-       // TODO(gri) Testing runs tests in both modes. Do we need to exclude
-       //           tracking of non-default behavior for tests?
        enableAlias bool
 
        conf *Config
index f1b520d33c2d1ca6846328b8a44a6dc7b09e7f27..066218772ea97f4d236a06e5c36b4b8abd704a9d 100644 (file)
@@ -122,7 +122,7 @@ func parseFlags(src []byte, flags *flag.FlagSet) error {
 //
 // If provided, opts may be used to mutate the Config before type-checking.
 func testFiles(t *testing.T, filenames []string, srcs [][]byte, colDelta uint, manual bool, opts ...func(*Config)) {
-       // Alias types are enabled by default.
+       // Alias types are enabled by default
        testFilesImpl(t, filenames, srcs, colDelta, manual, opts...)
        if !manual {
                t.Setenv("GODEBUG", "gotypesalias=0")
index fff2da49532031ff8e4ba49223cb2340b676434f..26ce49d87a7abd1c27577edf12a9d8bdb2480b89 100644 (file)
@@ -532,22 +532,6 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *TypeN
                        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
-                       // by calling gotypesalias.IncNonDefault().
-                       //
-                       // Note: As of Go 1.23, Settings.IncNonDefault is not present
-                       // in internal/godebug/godebug.go used during bootstrapping,
-                       // only after the tool chain is built and recompiles itself.
-                       // Check dynamically for the presence of IncNonDefault.
-                       // (This is not an issue for go/types because it is not used
-                       // during bootstrap.)
-                       //
-                       // TODO(gri) replace with direct call when we bootstrap with Go 1.20
-                       if s, ok := any(gotypesalias).(interface{ IncNonDefault() }); ok {
-                               s.IncNonDefault()
-                       }
-
                        if !versionErr && tparam0 != nil {
                                check.error(tdecl, UnsupportedFeature, "generic type alias requires GODEBUG=gotypesalias=1 or unset")
                                versionErr = true
index c651e57fa91aefc74546f68eaaae43a7fe8688f8..be990eabfe58d4acc9f688376abaff290669672d 100644 (file)
@@ -102,15 +102,9 @@ type Checker struct {
        // package information
        // (initialized by NewChecker, valid for the life-time of checker)
 
-       // If enableAlias is set, alias declarations produce an Alias type.
+       // If EnableAlias is set, alias declarations produce an Alias type.
        // Otherwise the alias information is only in the type name, which
        // points directly to the actual (aliased) type.
-       // Starting with Go 1.23, enableAlias is set by default.
-       // Non-default behavior is tracked with gotypesalias.IncNonDefault()
-       // for each declaration of an alias type where enableAlias is not set.
-       //
-       // TODO(gri) Testing runs tests in both modes. Do we need to exclude
-       //           tracking of non-default behavior for tests?
        enableAlias bool
 
        conf *Config
index 068507dade150394fd5445de2d39b0f6aba16098..6ad7ef3a27b6810fafb3c23e538a2807c263a226 100644 (file)
@@ -134,7 +134,7 @@ func parseFlags(src []byte, flags *flag.FlagSet) error {
 //
 // If provided, opts may be used to mutate the Config before type-checking.
 func testFiles(t *testing.T, filenames []string, srcs [][]byte, manual bool, opts ...func(*Config)) {
-       // Alias types are enabled by default.
+       // Alias types are enabled by default
        testFilesImpl(t, filenames, srcs, manual, opts...)
        if !manual {
                t.Setenv("GODEBUG", "gotypesalias=0")
index 3dab94aa0fa8fc1adfba7ff23601024ac9723654..937163fc7535f8fd13b17154bc25d6a4275d2338 100644 (file)
@@ -607,10 +607,6 @@ 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.
-                       gotypesalias.IncNonDefault()
-
                        if !versionErr && tparam0 != nil {
                                check.error(tdecl, UnsupportedFeature, "generic type alias requires GODEBUG=gotypesalias=1 or unset")
                                versionErr = true
index a95c8f2f9434e80bd95ec492567bef73f9d00f56..e9e043df4c764301dcbdde1978d288d6a56f929c 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"},
+       {Name: "gotypesalias", Package: "go/types", Changed: 23, Old: "0", Opaque: true}, // bug #66216: remove Opaque
        {Name: "http2client", Package: "net/http"},
        {Name: "http2debug", Package: "net/http", Opaque: true},
        {Name: "http2server", Package: "net/http"},
index fbbeb1a4754cb20f65e4345a88bc24a28b817986..deb993241d9785636f76d6dc48dbb4509f9ebc2a 100644 (file)
@@ -246,10 +246,6 @@ 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.