From: Robert Griesemer Date: Thu, 20 Oct 2022 22:56:11 +0000 (-0700) Subject: cmd/compile: add support for alternative comparable semantics X-Git-Tag: go1.20rc1~537 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b95ea201d54953055e7d5d29cf68bb5f19f21f93;p=gostls13.git 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 TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Auto-Submit: Robert Griesemer Reviewed-by: Robert Griesemer Reviewed-by: Robert Findley --- 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,