if x, y, ok := strings.Cut(gotoolchain, "+"); ok { // go1.2.3+auto
orig := gotoolchain
minToolchain, gotoolchain = x, y
- minVers = gover.ToolchainVersion(minToolchain)
+ minVers = gover.FromToolchain(minToolchain)
if minVers == "" {
base.Fatalf("invalid GOTOOLCHAIN %q: invalid minimum toolchain %q", orig, minToolchain)
}
// (including its environment and go env -w file).
} else if toolchain != "" {
// Accept toolchain only if it is >= our min.
- toolVers := gover.ToolchainVersion(toolchain)
+ toolVers := gover.FromToolchain(toolchain)
if gover.Compare(toolVers, minVers) >= 0 {
gotoolchain = toolchain
}
// We want to allow things like go1.20.3 but also gccgo-go1.20.3.
// We want to disallow mistakes / bad ideas like GOTOOLCHAIN=bash,
// since we will find that in the path lookup.
- // gover.ToolchainVersion has already done this check (except for the 1)
+ // gover.FromToolchain has already done this check (except for the 1)
// but doing it again makes sure we don't miss it on unexpected code paths.
if !strings.HasPrefix(gotoolchain, "go1") && !strings.Contains(gotoolchain, "-go1") {
base.Fatalf("invalid GOTOOLCHAIN %q", gotoolchain)
if TestVersion != "" {
v = TestVersion
}
- if v := ToolchainVersion(v); v != "" {
+ if v := FromToolchain(v); v != "" {
return v
}
func ModIsValid(path, vers string) bool {
if IsToolchain(path) {
if path == "toolchain" {
- return IsValid(ToolchainVersion(vers))
+ return IsValid(FromToolchain(vers))
}
return IsValid(vers)
}
"strings"
)
-// ToolchainVersion returns the Go version for the named toolchain,
+// FromToolchain returns the Go version for the named toolchain,
// derived from the name itself (not by running the toolchain).
// A toolchain is named "goVERSION" or "anything-goVERSION".
// A suffix after the VERSION introduced by a +, -, space, or tab is removed.
// Examples:
//
-// ToolchainVersion("go1.2.3") == "1.2.3"
-// ToolchainVersion("go1.2.3+bigcorp") == "1.2.3"
-// ToolchainVersion("go1.2.3-bigcorp") == "1.2.3"
-// ToolchainVersion("gccgo-go1.23rc4") == "1.23rc4"
-// ToolchainVersion("invalid") == ""
-func ToolchainVersion(name string) string {
+// FromToolchain("go1.2.3") == "1.2.3"
+// FromToolchain("go1.2.3+bigcorp") == "1.2.3"
+// FromToolchain("go1.2.3-bigcorp") == "1.2.3"
+// FromToolchain("gccgo-go1.23rc4") == "1.23rc4"
+// FromToolchain("invalid") == ""
+func FromToolchain(name string) string {
var v string
if strings.HasPrefix(name, "go") {
v = name[2:]
if IsValid(name) {
return name
}
- return ToolchainVersion(name)
+ return FromToolchain(name)
}
// Startup records the information that went into the startup-time version switch.
})
} else {
sort.Slice(list, func(i, j int) bool {
- return gover.Compare(gover.ToolchainVersion(list[i]), gover.ToolchainVersion(list[j])) < 0
+ return gover.Compare(gover.FromToolchain(list[i]), gover.FromToolchain(list[j])) < 0
})
}
versions.List = list
}
// Update go and toolchain lines.
- tv := gover.ToolchainVersion(toolchain)
+ tv := gover.FromToolchain(toolchain)
// Set go version if missing.
if modFile.Go == nil || modFile.Go.Version == "" {
v := modFileGoVersion(modFile)