diff options
| author | Robert Griesemer <gri@golang.org> | 2022-10-20 15:56:11 -0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-10-25 20:28:23 +0000 |
| commit | b95ea201d54953055e7d5d29cf68bb5f19f21f93 (patch) | |
| tree | b52453ec04b24df06bd6955e6781cadf8e4d969d /src/cmd/compile | |
| parent | 2dcc9acbd27902c9e551f54ca29d2519418b45c4 (diff) | |
| download | go-b95ea201d54953055e7d5d29cf68bb5f19f21f93.tar.xz | |
cmd/compile: add support for alternative comparable semantics
Add the experimental compiler flag -altcomparable. If set, the
compiler uses alternative comparable semantics: any ordinary
(non-type parameter) interface implements the comparable
constraint.
This permits experimenting with this alternative semantics
akin to what is proposed in #52509.
For #52509.
Change-Id: I64192eee6f2a550eeb50de011079f2f0b994cf94
Reviewed-on: https://go-review.googlesource.com/c/go/+/444636
Run-TryBot: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile')
| -rw-r--r-- | src/cmd/compile/internal/base/flag.go | 3 | ||||
| -rw-r--r-- | src/cmd/compile/internal/noder/irgen.go | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/base/flag.go b/src/cmd/compile/internal/base/flag.go index 42273ea350..3e9d86c9bc 100644 --- a/src/cmd/compile/internal/base/flag.go +++ b/src/cmd/compile/internal/base/flag.go @@ -122,7 +122,8 @@ type CmdFlags struct { SymABIs string "help:\"read symbol ABIs from `file`\"" TraceProfile string "help:\"write an execution trace to `file`\"" TrimPath string "help:\"remove `prefix` from recorded source file paths\"" - WB bool "help:\"enable write barrier\"" // TODO: remove + WB bool "help:\"enable write barrier\"" // TODO: remove + AltComparable bool "help:\"enable alternative comparable semantics\"" // experiment - remove eventually // Configuration derived from flags; not a flag itself. Cfg struct { diff --git a/src/cmd/compile/internal/noder/irgen.go b/src/cmd/compile/internal/noder/irgen.go index 57872bce27..4a15c626b9 100644 --- a/src/cmd/compile/internal/noder/irgen.go +++ b/src/cmd/compile/internal/noder/irgen.go @@ -55,8 +55,9 @@ func checkFiles(noders []*noder) (posMap, *types2.Package, *types2.Info) { } base.ErrorfAt(m.makeXPos(terr.Pos), "%s", msg) }, - Importer: &importer, - Sizes: &gcSizes{}, + Importer: &importer, + Sizes: &gcSizes{}, + AltComparableSemantics: base.Flag.AltComparable, // experiment - remove eventually } info := &types2.Info{ StoreTypesInSyntax: true, |
