diff options
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/internal/objabi/exp.go | 11 | ||||
| -rw-r--r-- | src/cmd/internal/objabi/flag.go | 14 |
2 files changed, 16 insertions, 9 deletions
diff --git a/src/cmd/internal/objabi/exp.go b/src/cmd/internal/objabi/exp.go index 9eb3e431b3..3371c6c8f8 100644 --- a/src/cmd/internal/objabi/exp.go +++ b/src/cmd/internal/objabi/exp.go @@ -108,8 +108,9 @@ func parseExperiments() goexperiment.Flags { // expList returns the list of lower-cased experiment names for // experiments that differ from base. base may be nil to indicate no -// experiments. -func expList(exp, base *goexperiment.Flags) []string { +// experiments. If all is true, then include all experiment flags, +// regardless of base. +func expList(exp, base *goexperiment.Flags, all bool) []string { var list []string rv := reflect.ValueOf(exp).Elem() var rBase reflect.Value @@ -124,7 +125,7 @@ func expList(exp, base *goexperiment.Flags) []string { if base != nil { baseVal = rBase.Field(i).Bool() } - if val != baseVal { + if all || val != baseVal { if val { list = append(list, name) } else { @@ -140,11 +141,11 @@ func expList(exp, base *goexperiment.Flags) []string { // GOEXPERIMENT is exactly what a user would set on the command line // to get the set of enabled experiments. func GOEXPERIMENT() string { - return strings.Join(expList(&Experiment, &experimentBaseline), ",") + return strings.Join(expList(&Experiment, &experimentBaseline, false), ",") } // EnabledExperiments returns a list of enabled experiments, as // lower-cased experiment names. func EnabledExperiments() []string { - return expList(&Experiment, nil) + return expList(&Experiment, nil, false) } diff --git a/src/cmd/internal/objabi/flag.go b/src/cmd/internal/objabi/flag.go index 6a8a69116d..9fcab4cc85 100644 --- a/src/cmd/internal/objabi/flag.go +++ b/src/cmd/internal/objabi/flag.go @@ -93,10 +93,16 @@ func (versionFlag) Set(s string) error { p := "" - // If the enabled experiments differ from the defaults, - // include that difference. - if goexperiment := GOEXPERIMENT(); goexperiment != "" { - p = " X:" + goexperiment + if s == "goexperiment" { + // test/run.go uses this to discover the full set of + // experiment tags. Report everything. + p = " X:" + strings.Join(expList(&Experiment, nil, true), ",") + } else { + // If the enabled experiments differ from the defaults, + // include that difference. + if goexperiment := GOEXPERIMENT(); goexperiment != "" { + p = " X:" + goexperiment + } } // The go command invokes -V=full to get a unique identifier |
