diff --git a/src/cmd/vet/buildtag.go b/src/cmd/vet/buildtag.go index 5fa08b62d7e..80d8f819240 100644 --- a/src/cmd/vet/buildtag.go +++ b/src/cmd/vet/buildtag.go @@ -69,9 +69,7 @@ func checkBuildTag(name string, data []byte) { setExit(1) break Args } - if strings.HasPrefix(elem, "!") { - elem = elem[1:] - } + elem = strings.TrimPrefix(elem, "!") for _, c := range elem { if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' && c != '.' { fmt.Fprintf(os.Stderr, "%s:%d: invalid non-alphanumeric build constraint: %s\n", name, i+1, arg) diff --git a/src/cmd/vet/main.go b/src/cmd/vet/main.go index 34c5297b89f..ffe988b9fce 100644 --- a/src/cmd/vet/main.go +++ b/src/cmd/vet/main.go @@ -250,7 +250,7 @@ func main() { } os.Exit(exitCode) } - if doPackage(".", flag.Args(), nil) == nil { + if doPackage(flag.Args(), nil) == nil { warnf("no files checked") } os.Exit(exitCode) @@ -290,12 +290,12 @@ func doPackageDir(directory string) { names = append(names, pkg.TestGoFiles...) // These are also in the "foo" package. names = append(names, pkg.SFiles...) prefixDirectory(directory, names) - basePkg := doPackage(directory, names, nil) + basePkg := doPackage(names, nil) // Is there also a "foo_test" package? If so, do that one as well. if len(pkg.XTestGoFiles) > 0 { names = pkg.XTestGoFiles prefixDirectory(directory, names) - doPackage(directory, names, basePkg) + doPackage(names, basePkg) } } @@ -312,7 +312,7 @@ type Package struct { // doPackage analyzes the single package constructed from the named files. // It returns the parsed Package or nil if none of the files have been checked. -func doPackage(directory string, names []string, basePkg *Package) *Package { +func doPackage(names []string, basePkg *Package) *Package { var files []*File var astFiles []*ast.File fs := token.NewFileSet() diff --git a/src/cmd/vet/method.go b/src/cmd/vet/method.go index baefa554a40..b13ce2fcb56 100644 --- a/src/cmd/vet/method.go +++ b/src/cmd/vet/method.go @@ -138,7 +138,7 @@ func typeFlatten(l []*ast.Field) []ast.Expr { t = append(t, f.Type) continue } - for _ = range f.Names { + for range f.Names { t = append(t, f.Type) } } diff --git a/src/cmd/vet/print.go b/src/cmd/vet/print.go index 9998ddae074..dae307695b2 100644 --- a/src/cmd/vet/print.go +++ b/src/cmd/vet/print.go @@ -237,23 +237,24 @@ func (f *File) checkPrintf(call *ast.CallExpr, name string) { maxArgNum := firstArg for i, w := 0, 0; i < len(format); i += w { w = 1 - if format[i] == '%' { - state := f.parsePrintfVerb(call, name, format[i:], firstArg, argNum) - if state == nil { - return - } - w = len(state.format) - if !f.okPrintfArg(call, state) { // One error per format is enough. - return - } - if len(state.argNums) > 0 { - // Continue with the next sequential argument. - argNum = state.argNums[len(state.argNums)-1] + 1 - } - for _, n := range state.argNums { - if n >= maxArgNum { - maxArgNum = n + 1 - } + if format[i] != '%' { + continue + } + state := f.parsePrintfVerb(call, name, format[i:], firstArg, argNum) + if state == nil { + return + } + w = len(state.format) + if !f.okPrintfArg(call, state) { // One error per format is enough. + return + } + if len(state.argNums) > 0 { + // Continue with the next sequential argument. + argNum = state.argNums[len(state.argNums)-1] + 1 + } + for _, n := range state.argNums { + if n >= maxArgNum { + maxArgNum = n + 1 } } } @@ -498,7 +499,7 @@ func (f *File) okPrintfArg(call *ast.CallExpr, state *formatState) (ok bool) { nargs := len(state.argNums) for i := 0; i < nargs-trueArgs; i++ { argNum := state.argNums[i] - if !f.argCanBeChecked(call, i, true, state) { + if !f.argCanBeChecked(call, i, state) { return } arg := call.Args[argNum] @@ -511,7 +512,7 @@ func (f *File) okPrintfArg(call *ast.CallExpr, state *formatState) (ok bool) { return true } argNum := state.argNums[len(state.argNums)-1] - if !f.argCanBeChecked(call, len(state.argNums)-1, false, state) { + if !f.argCanBeChecked(call, len(state.argNums)-1, state) { return false } arg := call.Args[argNum] @@ -577,7 +578,7 @@ func (f *File) isFunctionValue(e ast.Expr) bool { // argCanBeChecked reports whether the specified argument is statically present; // it may be beyond the list of arguments or in a terminal slice... argument, which // means we can't see it. -func (f *File) argCanBeChecked(call *ast.CallExpr, formatArg int, isStar bool, state *formatState) bool { +func (f *File) argCanBeChecked(call *ast.CallExpr, formatArg int, state *formatState) bool { argNum := state.argNums[formatArg] if argNum < 0 { // Shouldn't happen, so catch it with prejudice. diff --git a/src/cmd/vet/unused.go b/src/cmd/vet/unused.go index df2317a4365..02fcd841cd0 100644 --- a/src/cmd/vet/unused.go +++ b/src/cmd/vet/unused.go @@ -82,7 +82,7 @@ func checkUnusedResult(f *File, n ast.Node) { } } else if !ok { // package-qualified function (e.g. fmt.Errorf) - obj, _ := f.pkg.uses[selector.Sel] + obj := f.pkg.uses[selector.Sel] if obj, ok := obj.(*types.Func); ok { qname := obj.Pkg().Path() + "." + obj.Name() if unusedFuncs[qname] {