aboutsummaryrefslogtreecommitdiff
path: root/internal/stdlib/stdlib.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/stdlib/stdlib.go')
-rw-r--r--internal/stdlib/stdlib.go17
1 files changed, 16 insertions, 1 deletions
diff --git a/internal/stdlib/stdlib.go b/internal/stdlib/stdlib.go
index adf1cf49..3de7dc89 100644
--- a/internal/stdlib/stdlib.go
+++ b/internal/stdlib/stdlib.go
@@ -50,10 +50,18 @@ var (
// VersionForTag returns the semantic version for the Go tag, or "" if
// tag doesn't correspond to a Go release or beta tag.
// Examples:
+// "go1" => "v1.0.0"
// "go1.2" => "v1.2.0"
// "go1.13beta1" => "v1.13.0-beta.1"
// "go1.9rc2" => "v1.9.0-rc.2"
func VersionForTag(tag string) string {
+ // Special cases for go1.
+ if tag == "go1" {
+ return "v1.0.0"
+ }
+ if tag == "go1.0" {
+ return ""
+ }
m := tagRegexp.FindStringSubmatch(tag)
if m == nil {
return ""
@@ -76,6 +84,10 @@ func VersionForTag(tag string) string {
func TagForVersion(version string) (_ string, err error) {
defer derrors.Wrap(&err, "TagForVersion(%q)", version)
+ // Special case: v1.0.0 => go1.
+ if version == "v1.0.0" {
+ return "go1", nil
+ }
if !semver.IsValid(version) {
return "", derrors.FromHTTPStatus(http.StatusBadRequest, "requested version is not a valid semantic version: %q ", version)
}
@@ -108,12 +120,15 @@ func TagForVersion(version string) (_ string, err error) {
// MajorVersionForVersion returns the Go major version for version.
// E.g. "v1.13.3" => "go1".
func MajorVersionForVersion(version string) (_ string, err error) {
- defer derrors.Wrap(&err, "MajorTagForVersion(%q)", version)
+ defer derrors.Wrap(&err, "MajorVersionForVersion(%q)", version)
tag, err := TagForVersion(version)
if err != nil {
return "", err
}
+ if tag == "go1" {
+ return tag, nil
+ }
i := strings.IndexRune(tag, '.')
if i < 0 {
return "", fmt.Errorf("no '.' in go tag %q", tag)