From b95ea201d54953055e7d5d29cf68bb5f19f21f93 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 20 Oct 2022 15:56:11 -0700 Subject: [PATCH] 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 --- src/cmd/compile/internal/base/flag.go | 3 ++- 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, -- 2.50.0