Skip to content

Commit 83f190e

Browse files
committed
use go/version to compare version cli arg
1 parent 6440a08 commit 83f190e

File tree

4 files changed

+15
-31
lines changed

4 files changed

+15
-31
lines changed

src/cmd/fix/buildtag.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ package main
66

77
import (
88
"go/ast"
9+
"go/version"
910
"strings"
1011
)
1112

1213
func init() {
1314
register(buildtagFix)
1415
}
1516

16-
const buildtagGoVersionCutoff = 1_18
17+
const buildtagGoVersionCutoff = "go1.18"
1718

1819
var buildtagFix = fix{
1920
name: "buildtag",
@@ -23,7 +24,7 @@ var buildtagFix = fix{
2324
}
2425

2526
func buildtag(f *ast.File) bool {
26-
if goVersion < buildtagGoVersionCutoff {
27+
if version.Compare(*goVersion, buildtagGoVersionCutoff) == -1 {
2728
return false
2829
}
2930

src/cmd/fix/buildtag_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ func init() {
1111
var buildtagTests = []testCase{
1212
{
1313
Name: "buildtag.oldGo",
14-
Version: 1_10,
14+
Version: "go1_10",
1515
In: `//go:build yes
1616
// +build yes
1717
@@ -20,7 +20,7 @@ package main
2020
},
2121
{
2222
Name: "buildtag.new",
23-
Version: 1_99,
23+
Version: "go1_99",
2424
In: `//go:build yes
2525
// +build yes
2626

src/cmd/fix/main.go

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"os"
2020
"path/filepath"
2121
"sort"
22-
"strconv"
2322
"strings"
2423

2524
"internal/diff"
@@ -39,10 +38,8 @@ var forceRewrites = flag.String("force", "",
3938
var allowed, force map[string]bool
4039

4140
var (
42-
doDiff = flag.Bool("diff", false, "display diffs instead of rewriting files")
43-
goVersionStr = flag.String("go", "", "go language version for files")
44-
45-
goVersion int // 115 for go1.15
41+
doDiff = flag.Bool("diff", false, "display diffs instead of rewriting files")
42+
goVersion = flag.String("go", "", "go language version for files")
4643
)
4744

4845
// enable for debugging fix failures
@@ -70,24 +67,9 @@ func main() {
7067
flag.Usage = usage
7168
flag.Parse()
7269

73-
if *goVersionStr != "" {
74-
if !version.IsValid(*goVersionStr) {
75-
report(fmt.Errorf("invalid -go=%s", *goVersionStr))
76-
os.Exit(exitCode)
77-
}
78-
majorStr := version.Lang(*goVersionStr)[len("go"):]
79-
minorStr := "0"
80-
if before, after, found := strings.Cut(majorStr, "."); found {
81-
majorStr, minorStr = before, after
82-
}
83-
major, err1 := strconv.Atoi(majorStr)
84-
minor, err2 := strconv.Atoi(minorStr)
85-
if err1 != nil || err2 != nil || major < 0 || major >= 100 || minor < 0 || minor >= 100 {
86-
report(fmt.Errorf("invalid -go=%s", *goVersionStr))
87-
os.Exit(exitCode)
88-
}
89-
90-
goVersion = major*100 + minor
70+
if !version.IsValid(*goVersion) {
71+
report(fmt.Errorf("invalid -go=%s", *goVersion))
72+
os.Exit(exitCode)
9173
}
9274

9375
sort.Sort(byDate(fixes))

src/cmd/fix/main_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ import (
88
"fmt"
99
"go/ast"
1010
"go/parser"
11-
"internal/diff"
12-
"internal/testenv"
1311
"strings"
1412
"testing"
13+
14+
"internal/diff"
15+
"internal/testenv"
1516
)
1617

1718
type testCase struct {
1819
Name string
1920
Fn func(*ast.File) bool
20-
Version int
21+
Version string
2122
In string
2223
Out string
2324
}
@@ -96,7 +97,7 @@ func TestRewrite(t *testing.T) {
9697
for _, tt := range testCases {
9798
tt := tt
9899
t.Run(tt.Name, func(t *testing.T) {
99-
if tt.Version == 0 {
100+
if tt.Version == "" {
100101
if testing.Verbose() {
101102
// Don't run in parallel: cmd/fix sometimes writes directly to stderr,
102103
// and since -v prints which test is currently running we want that

0 commit comments

Comments
 (0)