From 52ca4414ab334861959a1b75fd1e7e43a19df627 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 16 Jul 2022 14:20:22 +0200 Subject: [PATCH] feat: extend matching --- asasalint.go | 25 +++++---- asasalint_test.go | 72 +++++++++++++++++++------- testdata/src/basic/logger.go | 50 +++++++++--------- testdata/src/basic/logger_test.go | 50 +++++++++--------- testdata/src/custom/logger.go | 50 +++++++++--------- testdata/src/custom/logger_test.go | 50 +++++++++--------- testdata/src/ignoretest/logger.go | 50 +++++++++--------- testdata/src/ignoretest/logger_test.go | 50 +++++++++--------- testdata/src/nobuiltin/logger.go | 50 +++++++++--------- testdata/src/nobuiltin/logger_test.go | 50 +++++++++--------- testdata/src/nobuiltin/std.go | 36 ++++++------- testdata/src/nobuiltin/std_test.go | 36 ++++++------- 12 files changed, 305 insertions(+), 264 deletions(-) diff --git a/asasalint.go b/asasalint.go index e4c2e2e..544bad8 100644 --- a/asasalint.go +++ b/asasalint.go @@ -1,10 +1,13 @@ package asasalint import ( + "bytes" "fmt" "go/ast" + "go/printer" "go/token" "go/types" + "log" "regexp" "strings" @@ -13,7 +16,7 @@ import ( "golang.org/x/tools/go/ast/inspector" ) -const BuiltinExclusions = `^(Print|Fprint|Sprint|Fatal|Panic|Error|Warn|Warning|Info|Debug)(|f|ln)$` +const BuiltinExclusions = `^(fmt|log|logger)\.(Print|Fprint|Sprint|Fatal|Panic|Error|Warn|Warning|Info|Debug)(|f|ln)$` type LinterSetting struct { Exclude []string @@ -91,7 +94,11 @@ func (a *analyzer) AsCheckVisitor(pass *analysis.Pass) func(ast.Node) { return } - fnName := getFuncName(caller) + fnName, err := getFuncName(pass.Fset, caller) + if err != nil { + log.Println(err) + return + } for _, exclude := range a.excludes { if exclude.MatchString(fnName) { @@ -126,15 +133,13 @@ func (a *analyzer) AsCheckVisitor(pass *analysis.Pass) func(ast.Node) { } } -func getFuncName(caller *ast.CallExpr) string { - switch n := caller.Fun.(type) { - case *ast.Ident: - return n.Name - case *ast.SelectorExpr: - return n.Sel.Name - default: - return "" +func getFuncName(fset *token.FileSet, caller *ast.CallExpr) (string, error) { + buf := new(bytes.Buffer) + if err := printer.Fprint(buf, fset, caller.Fun); err != nil { + return "", fmt.Errorf("unable to print node at %s: %w", fset.Position(caller.Fun.Pos()), err) } + + return buf.String(), nil } func isSliceAnyVariadicFuncType(typ types.Type) (r bool) { diff --git a/asasalint_test.go b/asasalint_test.go index d5c4afb..fcd7c18 100644 --- a/asasalint_test.go +++ b/asasalint_test.go @@ -54,33 +54,69 @@ func TestIsSliceAnyVariadicFuncType(t *testing.T) { } func TestGetFuncName(t *testing.T) { - src := `package p + testCases := []struct { + desc string + src string + expected string + }{ + { + desc: "function", + src: `package p func hello(a int, b ...any) {} func hello2(a int, b int) { hello(a, b)} +`, + expected: "hello", + }, + { + desc: "method", + src: `package p type A struct {} -func (a *A) hello(a int, b ...any) { - hello(a, b...) -} +func (a *A) hello(a int, b ...any) {} func (a *A) hello2(a int, b int) { a.hello(a, b) } -` - fset := token.NewFileSet() - f, err := parser.ParseFile(fset, "src.go", src, 0) - if err != nil { - panic(err) +`, + expected: "a.hello", + }, + { + desc: "function inside a method", + src: `package p +type A struct {} +func (a *A) hello(a int, b ...any) { + hello(a, b...) +} +`, + expected: "hello", + }, } - ast.Inspect(f, func(n ast.Node) bool { - switch x := n.(type) { - case *ast.CallExpr: - s := getFuncName(x) - if s != "hello" { - t.Errorf("getFuncName(%#v) = %v, want hello", x.Fun, s) + for _, test := range testCases { + test := test + t.Run(test.desc, func(t *testing.T) { + t.Parallel() + + fset := token.NewFileSet() + f, err := parser.ParseFile(fset, "src.go", test.src, 0) + if err != nil { + panic(err) } - } - return true - }) + + ast.Inspect(f, func(n ast.Node) bool { + switch x := n.(type) { + case *ast.CallExpr: + s, err := getFuncName(fset, x) + if err != nil { + t.Fatal(err) + } + + if s != test.expected { + t.Errorf("%s: got %s, want %s", fset.Position(x.Fun.Pos()), s, test.expected) + } + } + return true + }) + }) + } } func TestAnalyzer(t *testing.T) { diff --git a/testdata/src/basic/logger.go b/testdata/src/basic/logger.go index 56020e4..1877c47 100644 --- a/testdata/src/basic/logger.go +++ b/testdata/src/basic/logger.go @@ -34,38 +34,38 @@ type Logger interface { Panicln(args ...interface{}) } -func fromLogger(l Logger) { +func fromLogger(logger Logger) { var a = []any{1, 2, 3} - l.Debug(a) - l.Debugf("%v", a) - l.Debugln(a) + logger.Debug(a) + logger.Debugf("%v", a) + logger.Debugln(a) - l.Info(a) - l.Infof("%v", a) - l.Infoln(a) + logger.Info(a) + logger.Infof("%v", a) + logger.Infoln(a) - l.Print(a) - l.Printf("%v", a) - l.Println(a) + logger.Print(a) + logger.Printf("%v", a) + logger.Println(a) - l.Warn(a) - l.Warnf("%v", a) - l.Warnln(a) + logger.Warn(a) + logger.Warnf("%v", a) + logger.Warnln(a) - l.Warning(a) - l.Warningf("%v", a) - l.Warningln(a) + logger.Warning(a) + logger.Warningf("%v", a) + logger.Warningln(a) - l.Error(a) - l.Errorf("%v", a) - l.Errorln(a) + logger.Error(a) + logger.Errorf("%v", a) + logger.Errorln(a) - l.Fatal(a) - l.Fatalf("%v", a) - l.Fatalln(a) + logger.Fatal(a) + logger.Fatalf("%v", a) + logger.Fatalln(a) - l.Panic(a) - l.Panicf("%v", a) - l.Panicln(a) + logger.Panic(a) + logger.Panicf("%v", a) + logger.Panicln(a) } diff --git a/testdata/src/basic/logger_test.go b/testdata/src/basic/logger_test.go index aed6a3b..0bd4b81 100644 --- a/testdata/src/basic/logger_test.go +++ b/testdata/src/basic/logger_test.go @@ -3,39 +3,39 @@ package main import "testing" func TestLogger(t *testing.T) { - var l Logger + var logger Logger var a = []any{1, 2, 3} - l.Debug(a) - l.Debugf("%v", a) - l.Debugln(a) + logger.Debug(a) + logger.Debugf("%v", a) + logger.Debugln(a) - l.Info(a) - l.Infof("%v", a) - l.Infoln(a) + logger.Info(a) + logger.Infof("%v", a) + logger.Infoln(a) - l.Print(a) - l.Printf("%v", a) - l.Println(a) + logger.Print(a) + logger.Printf("%v", a) + logger.Println(a) - l.Warn(a) - l.Warnf("%v", a) - l.Warnln(a) + logger.Warn(a) + logger.Warnf("%v", a) + logger.Warnln(a) - l.Warning(a) - l.Warningf("%v", a) - l.Warningln(a) + logger.Warning(a) + logger.Warningf("%v", a) + logger.Warningln(a) - l.Error(a) - l.Errorf("%v", a) - l.Errorln(a) + logger.Error(a) + logger.Errorf("%v", a) + logger.Errorln(a) - l.Fatal(a) - l.Fatalf("%v", a) - l.Fatalln(a) + logger.Fatal(a) + logger.Fatalf("%v", a) + logger.Fatalln(a) - l.Panic(a) - l.Panicf("%v", a) - l.Panicln(a) + logger.Panic(a) + logger.Panicf("%v", a) + logger.Panicln(a) } diff --git a/testdata/src/custom/logger.go b/testdata/src/custom/logger.go index 56020e4..1877c47 100644 --- a/testdata/src/custom/logger.go +++ b/testdata/src/custom/logger.go @@ -34,38 +34,38 @@ type Logger interface { Panicln(args ...interface{}) } -func fromLogger(l Logger) { +func fromLogger(logger Logger) { var a = []any{1, 2, 3} - l.Debug(a) - l.Debugf("%v", a) - l.Debugln(a) + logger.Debug(a) + logger.Debugf("%v", a) + logger.Debugln(a) - l.Info(a) - l.Infof("%v", a) - l.Infoln(a) + logger.Info(a) + logger.Infof("%v", a) + logger.Infoln(a) - l.Print(a) - l.Printf("%v", a) - l.Println(a) + logger.Print(a) + logger.Printf("%v", a) + logger.Println(a) - l.Warn(a) - l.Warnf("%v", a) - l.Warnln(a) + logger.Warn(a) + logger.Warnf("%v", a) + logger.Warnln(a) - l.Warning(a) - l.Warningf("%v", a) - l.Warningln(a) + logger.Warning(a) + logger.Warningf("%v", a) + logger.Warningln(a) - l.Error(a) - l.Errorf("%v", a) - l.Errorln(a) + logger.Error(a) + logger.Errorf("%v", a) + logger.Errorln(a) - l.Fatal(a) - l.Fatalf("%v", a) - l.Fatalln(a) + logger.Fatal(a) + logger.Fatalf("%v", a) + logger.Fatalln(a) - l.Panic(a) - l.Panicf("%v", a) - l.Panicln(a) + logger.Panic(a) + logger.Panicf("%v", a) + logger.Panicln(a) } diff --git a/testdata/src/custom/logger_test.go b/testdata/src/custom/logger_test.go index aed6a3b..0bd4b81 100644 --- a/testdata/src/custom/logger_test.go +++ b/testdata/src/custom/logger_test.go @@ -3,39 +3,39 @@ package main import "testing" func TestLogger(t *testing.T) { - var l Logger + var logger Logger var a = []any{1, 2, 3} - l.Debug(a) - l.Debugf("%v", a) - l.Debugln(a) + logger.Debug(a) + logger.Debugf("%v", a) + logger.Debugln(a) - l.Info(a) - l.Infof("%v", a) - l.Infoln(a) + logger.Info(a) + logger.Infof("%v", a) + logger.Infoln(a) - l.Print(a) - l.Printf("%v", a) - l.Println(a) + logger.Print(a) + logger.Printf("%v", a) + logger.Println(a) - l.Warn(a) - l.Warnf("%v", a) - l.Warnln(a) + logger.Warn(a) + logger.Warnf("%v", a) + logger.Warnln(a) - l.Warning(a) - l.Warningf("%v", a) - l.Warningln(a) + logger.Warning(a) + logger.Warningf("%v", a) + logger.Warningln(a) - l.Error(a) - l.Errorf("%v", a) - l.Errorln(a) + logger.Error(a) + logger.Errorf("%v", a) + logger.Errorln(a) - l.Fatal(a) - l.Fatalf("%v", a) - l.Fatalln(a) + logger.Fatal(a) + logger.Fatalf("%v", a) + logger.Fatalln(a) - l.Panic(a) - l.Panicf("%v", a) - l.Panicln(a) + logger.Panic(a) + logger.Panicf("%v", a) + logger.Panicln(a) } diff --git a/testdata/src/ignoretest/logger.go b/testdata/src/ignoretest/logger.go index 56020e4..1877c47 100644 --- a/testdata/src/ignoretest/logger.go +++ b/testdata/src/ignoretest/logger.go @@ -34,38 +34,38 @@ type Logger interface { Panicln(args ...interface{}) } -func fromLogger(l Logger) { +func fromLogger(logger Logger) { var a = []any{1, 2, 3} - l.Debug(a) - l.Debugf("%v", a) - l.Debugln(a) + logger.Debug(a) + logger.Debugf("%v", a) + logger.Debugln(a) - l.Info(a) - l.Infof("%v", a) - l.Infoln(a) + logger.Info(a) + logger.Infof("%v", a) + logger.Infoln(a) - l.Print(a) - l.Printf("%v", a) - l.Println(a) + logger.Print(a) + logger.Printf("%v", a) + logger.Println(a) - l.Warn(a) - l.Warnf("%v", a) - l.Warnln(a) + logger.Warn(a) + logger.Warnf("%v", a) + logger.Warnln(a) - l.Warning(a) - l.Warningf("%v", a) - l.Warningln(a) + logger.Warning(a) + logger.Warningf("%v", a) + logger.Warningln(a) - l.Error(a) - l.Errorf("%v", a) - l.Errorln(a) + logger.Error(a) + logger.Errorf("%v", a) + logger.Errorln(a) - l.Fatal(a) - l.Fatalf("%v", a) - l.Fatalln(a) + logger.Fatal(a) + logger.Fatalf("%v", a) + logger.Fatalln(a) - l.Panic(a) - l.Panicf("%v", a) - l.Panicln(a) + logger.Panic(a) + logger.Panicf("%v", a) + logger.Panicln(a) } diff --git a/testdata/src/ignoretest/logger_test.go b/testdata/src/ignoretest/logger_test.go index aed6a3b..0bd4b81 100644 --- a/testdata/src/ignoretest/logger_test.go +++ b/testdata/src/ignoretest/logger_test.go @@ -3,39 +3,39 @@ package main import "testing" func TestLogger(t *testing.T) { - var l Logger + var logger Logger var a = []any{1, 2, 3} - l.Debug(a) - l.Debugf("%v", a) - l.Debugln(a) + logger.Debug(a) + logger.Debugf("%v", a) + logger.Debugln(a) - l.Info(a) - l.Infof("%v", a) - l.Infoln(a) + logger.Info(a) + logger.Infof("%v", a) + logger.Infoln(a) - l.Print(a) - l.Printf("%v", a) - l.Println(a) + logger.Print(a) + logger.Printf("%v", a) + logger.Println(a) - l.Warn(a) - l.Warnf("%v", a) - l.Warnln(a) + logger.Warn(a) + logger.Warnf("%v", a) + logger.Warnln(a) - l.Warning(a) - l.Warningf("%v", a) - l.Warningln(a) + logger.Warning(a) + logger.Warningf("%v", a) + logger.Warningln(a) - l.Error(a) - l.Errorf("%v", a) - l.Errorln(a) + logger.Error(a) + logger.Errorf("%v", a) + logger.Errorln(a) - l.Fatal(a) - l.Fatalf("%v", a) - l.Fatalln(a) + logger.Fatal(a) + logger.Fatalf("%v", a) + logger.Fatalln(a) - l.Panic(a) - l.Panicf("%v", a) - l.Panicln(a) + logger.Panic(a) + logger.Panicf("%v", a) + logger.Panicln(a) } diff --git a/testdata/src/nobuiltin/logger.go b/testdata/src/nobuiltin/logger.go index c3c4ca4..4d6478c 100644 --- a/testdata/src/nobuiltin/logger.go +++ b/testdata/src/nobuiltin/logger.go @@ -34,38 +34,38 @@ type Logger interface { Panicln(args ...interface{}) } -func fromLogger(l Logger) { +func fromLogger(logger Logger) { var a = []any{1, 2, 3} - l.Debug(a) // want `pass \[\]any as any to func Debug func\(args \.\.\.interface{}\)` - l.Debugf("%v", a) // want `pass \[\]any as any to func Debugf func\(format string, args \.\.\.interface{}\)` - l.Debugln(a) // want `pass \[\]any as any to func Debugln func\(args \.\.\.interface{}\)` + logger.Debug(a) // want `pass \[\]any as any to func logger.Debug func\(args \.\.\.interface{}\)` + logger.Debugf("%v", a) // want `pass \[\]any as any to func logger.Debugf func\(format string, args \.\.\.interface{}\)` + logger.Debugln(a) // want `pass \[\]any as any to func logger.Debugln func\(args \.\.\.interface{}\)` - l.Info(a) // want `pass \[\]any as any to func Info func\(args \.\.\.interface{}\)` - l.Infof("%v", a) // want `pass \[\]any as any to func Infof func\(format string, args \.\.\.interface{}\)` - l.Infoln(a) // want `pass \[\]any as any to func Infoln func\(args \.\.\.interface{}\)` + logger.Info(a) // want `pass \[\]any as any to func logger.Info func\(args \.\.\.interface{}\)` + logger.Infof("%v", a) // want `pass \[\]any as any to func logger.Infof func\(format string, args \.\.\.interface{}\)` + logger.Infoln(a) // want `pass \[\]any as any to func logger.Infoln func\(args \.\.\.interface{}\)` - l.Print(a) // want `pass \[\]any as any to func Print func\(args \.\.\.interface{}\)` - l.Printf("%v", a) // want `pass \[\]any as any to func Printf func\(format string, args \.\.\.interface{}\)` - l.Println(a) // want `pass \[\]any as any to func Println func\(args \.\.\.interface{}\)` + logger.Print(a) // want `pass \[\]any as any to func logger.Print func\(args \.\.\.interface{}\)` + logger.Printf("%v", a) // want `pass \[\]any as any to func logger.Printf func\(format string, args \.\.\.interface{}\)` + logger.Println(a) // want `pass \[\]any as any to func logger.Println func\(args \.\.\.interface{}\)` - l.Warn(a) // want `pass \[\]any as any to func Warn func\(args \.\.\.interface{}\)` - l.Warnf("%v", a) // want `pass \[\]any as any to func Warnf func\(format string, args \.\.\.interface{}\)` - l.Warnln(a) // want `pass \[\]any as any to func Warnln func\(args \.\.\.interface{}\)` + logger.Warn(a) // want `pass \[\]any as any to func logger.Warn func\(args \.\.\.interface{}\)` + logger.Warnf("%v", a) // want `pass \[\]any as any to func logger.Warnf func\(format string, args \.\.\.interface{}\)` + logger.Warnln(a) // want `pass \[\]any as any to func logger.Warnln func\(args \.\.\.interface{}\)` - l.Warning(a) // want `pass \[\]any as any to func Warning func\(args \.\.\.interface{}\)` - l.Warningf("%v", a) // want `pass \[\]any as any to func Warningf func\(format string, args \.\.\.interface{}\)` - l.Warningln(a) // want `pass \[\]any as any to func Warningln func\(args \.\.\.interface{}\)` + logger.Warning(a) // want `pass \[\]any as any to func logger.Warning func\(args \.\.\.interface{}\)` + logger.Warningf("%v", a) // want `pass \[\]any as any to func logger.Warningf func\(format string, args \.\.\.interface{}\)` + logger.Warningln(a) // want `pass \[\]any as any to func logger.Warningln func\(args \.\.\.interface{}\)` - l.Error(a) // want `pass \[\]any as any to func Error func\(args \.\.\.interface{}\)` - l.Errorf("%v", a) // want `pass \[\]any as any to func Errorf func\(format string, args \.\.\.interface{}\)` - l.Errorln(a) // want `pass \[\]any as any to func Errorln func\(args \.\.\.interface{}\)` + logger.Error(a) // want `pass \[\]any as any to func logger.Error func\(args \.\.\.interface{}\)` + logger.Errorf("%v", a) // want `pass \[\]any as any to func logger.Errorf func\(format string, args \.\.\.interface{}\)` + logger.Errorln(a) // want `pass \[\]any as any to func logger.Errorln func\(args \.\.\.interface{}\)` - l.Fatal(a) // want `pass \[\]any as any to func Fatal func\(args \.\.\.interface{}\)` - l.Fatalf("%v", a) // want `pass \[\]any as any to func Fatalf func\(format string, args \.\.\.interface{}\)` - l.Fatalln(a) // want `pass \[\]any as any to func Fatalln func\(args \.\.\.interface{}\)` + logger.Fatal(a) // want `pass \[\]any as any to func logger.Fatal func\(args \.\.\.interface{}\)` + logger.Fatalf("%v", a) // want `pass \[\]any as any to func logger.Fatalf func\(format string, args \.\.\.interface{}\)` + logger.Fatalln(a) // want `pass \[\]any as any to func logger.Fatalln func\(args \.\.\.interface{}\)` - l.Panic(a) // want `pass \[\]any as any to func Panic func\(args \.\.\.interface{}\)` - l.Panicf("%v", a) // want `pass \[\]any as any to func Panicf func\(format string, args \.\.\.interface{}\)` - l.Panicln(a) // want `pass \[\]any as any to func Panicln func\(args \.\.\.interface{}\)` + logger.Panic(a) // want `pass \[\]any as any to func logger.Panic func\(args \.\.\.interface{}\)` + logger.Panicf("%v", a) // want `pass \[\]any as any to func logger.Panicf func\(format string, args \.\.\.interface{}\)` + logger.Panicln(a) // want `pass \[\]any as any to func logger.Panicln func\(args \.\.\.interface{}\)` } diff --git a/testdata/src/nobuiltin/logger_test.go b/testdata/src/nobuiltin/logger_test.go index 4a74305..c83c484 100644 --- a/testdata/src/nobuiltin/logger_test.go +++ b/testdata/src/nobuiltin/logger_test.go @@ -3,39 +3,39 @@ package main import "testing" func TestLogger(t *testing.T) { - var l Logger + var logger Logger var a = []any{1, 2, 3} - l.Debug(a) // want `pass \[\]any as any to func Debug func\(args \.\.\.interface{}\)` - l.Debugf("%v", a) // want `pass \[\]any as any to func Debugf func\(format string, args \.\.\.interface{}\)` - l.Debugln(a) // want `pass \[\]any as any to func Debugln func\(args \.\.\.interface{}\)` + logger.Debug(a) // want `pass \[\]any as any to func logger.Debug func\(args \.\.\.interface{}\)` + logger.Debugf("%v", a) // want `pass \[\]any as any to func logger.Debugf func\(format string, args \.\.\.interface{}\)` + logger.Debugln(a) // want `pass \[\]any as any to func logger.Debugln func\(args \.\.\.interface{}\)` - l.Info(a) // want `pass \[\]any as any to func Info func\(args \.\.\.interface{}\)` - l.Infof("%v", a) // want `pass \[\]any as any to func Infof func\(format string, args \.\.\.interface{}\)` - l.Infoln(a) // want `pass \[\]any as any to func Infoln func\(args \.\.\.interface{}\)` + logger.Info(a) // want `pass \[\]any as any to func logger.Info func\(args \.\.\.interface{}\)` + logger.Infof("%v", a) // want `pass \[\]any as any to func logger.Infof func\(format string, args \.\.\.interface{}\)` + logger.Infoln(a) // want `pass \[\]any as any to func logger.Infoln func\(args \.\.\.interface{}\)` - l.Print(a) // want `pass \[\]any as any to func Print func\(args \.\.\.interface{}\)` - l.Printf("%v", a) // want `pass \[\]any as any to func Printf func\(format string, args \.\.\.interface{}\)` - l.Println(a) // want `pass \[\]any as any to func Println func\(args \.\.\.interface{}\)` + logger.Print(a) // want `pass \[\]any as any to func logger.Print func\(args \.\.\.interface{}\)` + logger.Printf("%v", a) // want `pass \[\]any as any to func logger.Printf func\(format string, args \.\.\.interface{}\)` + logger.Println(a) // want `pass \[\]any as any to func logger.Println func\(args \.\.\.interface{}\)` - l.Warn(a) // want `pass \[\]any as any to func Warn func\(args \.\.\.interface{}\)` - l.Warnf("%v", a) // want `pass \[\]any as any to func Warnf func\(format string, args \.\.\.interface{}\)` - l.Warnln(a) // want `pass \[\]any as any to func Warnln func\(args \.\.\.interface{}\)` + logger.Warn(a) // want `pass \[\]any as any to func logger.Warn func\(args \.\.\.interface{}\)` + logger.Warnf("%v", a) // want `pass \[\]any as any to func logger.Warnf func\(format string, args \.\.\.interface{}\)` + logger.Warnln(a) // want `pass \[\]any as any to func logger.Warnln func\(args \.\.\.interface{}\)` - l.Warning(a) // want `pass \[\]any as any to func Warning func\(args \.\.\.interface{}\)` - l.Warningf("%v", a) // want `pass \[\]any as any to func Warningf func\(format string, args \.\.\.interface{}\)` - l.Warningln(a) // want `pass \[\]any as any to func Warningln func\(args \.\.\.interface{}\)` + logger.Warning(a) // want `pass \[\]any as any to func logger.Warning func\(args \.\.\.interface{}\)` + logger.Warningf("%v", a) // want `pass \[\]any as any to func logger.Warningf func\(format string, args \.\.\.interface{}\)` + logger.Warningln(a) // want `pass \[\]any as any to func logger.Warningln func\(args \.\.\.interface{}\)` - l.Error(a) // want `pass \[\]any as any to func Error func\(args \.\.\.interface{}\)` - l.Errorf("%v", a) // want `pass \[\]any as any to func Errorf func\(format string, args \.\.\.interface{}\)` - l.Errorln(a) // want `pass \[\]any as any to func Errorln func\(args \.\.\.interface{}\)` + logger.Error(a) // want `pass \[\]any as any to func logger.Error func\(args \.\.\.interface{}\)` + logger.Errorf("%v", a) // want `pass \[\]any as any to func logger.Errorf func\(format string, args \.\.\.interface{}\)` + logger.Errorln(a) // want `pass \[\]any as any to func logger.Errorln func\(args \.\.\.interface{}\)` - l.Fatal(a) // want `pass \[\]any as any to func Fatal func\(args \.\.\.interface{}\)` - l.Fatalf("%v", a) // want `pass \[\]any as any to func Fatalf func\(format string, args \.\.\.interface{}\)` - l.Fatalln(a) // want `pass \[\]any as any to func Fatalln func\(args \.\.\.interface{}\)` + logger.Fatal(a) // want `pass \[\]any as any to func logger.Fatal func\(args \.\.\.interface{}\)` + logger.Fatalf("%v", a) // want `pass \[\]any as any to func logger.Fatalf func\(format string, args \.\.\.interface{}\)` + logger.Fatalln(a) // want `pass \[\]any as any to func logger.Fatalln func\(args \.\.\.interface{}\)` - l.Panic(a) // want `pass \[\]any as any to func Panic func\(args \.\.\.interface{}\)` - l.Panicf("%v", a) // want `pass \[\]any as any to func Panicf func\(format string, args \.\.\.interface{}\)` - l.Panicln(a) // want `pass \[\]any as any to func Panicln func\(args \.\.\.interface{}\)` + logger.Panic(a) // want `pass \[\]any as any to func logger.Panic func\(args \.\.\.interface{}\)` + logger.Panicf("%v", a) // want `pass \[\]any as any to func logger.Panicf func\(format string, args \.\.\.interface{}\)` + logger.Panicln(a) // want `pass \[\]any as any to func logger.Panicln func\(args \.\.\.interface{}\)` } diff --git a/testdata/src/nobuiltin/std.go b/testdata/src/nobuiltin/std.go index 0b187d2..1d63b9f 100644 --- a/testdata/src/nobuiltin/std.go +++ b/testdata/src/nobuiltin/std.go @@ -9,28 +9,28 @@ import ( func std() { var a = []any{1, 2, 3} - fmt.Println(a) // want `pass \[\]any as any to func Println func\(a \.\.\.any\) \(n int, err error\)` - fmt.Printf("%v", a) // want `pass \[\]any as any to func Printf func\(format string, a \.\.\.any\) \(n int, err error\)` - fmt.Print(a) // want `pass \[\]any as any to func Print func\(a \.\.\.any\) \(n int, err error\)` + fmt.Println(a) // want `pass \[\]any as any to func fmt.Println func\(a \.\.\.any\) \(n int, err error\)` + fmt.Printf("%v", a) // want `pass \[\]any as any to func fmt.Printf func\(format string, a \.\.\.any\) \(n int, err error\)` + fmt.Print(a) // want `pass \[\]any as any to func fmt.Print func\(a \.\.\.any\) \(n int, err error\)` - fmt.Sprintln(a) // want `pass \[\]any as any to func Sprintln func\(a \.\.\.any\) string` - fmt.Sprintf("%v", a) // want `pass \[\]any as any to func Sprintf func\(format string, a \.\.\.any\) string` - fmt.Sprint(a) // want `pass \[\]any as any to func Sprint func\(a \.\.\.any\) string` + fmt.Sprintln(a) // want `pass \[\]any as any to func fmt.Sprintln func\(a \.\.\.any\) string` + fmt.Sprintf("%v", a) // want `pass \[\]any as any to func fmt.Sprintf func\(format string, a \.\.\.any\) string` + fmt.Sprint(a) // want `pass \[\]any as any to func fmt.Sprint func\(a \.\.\.any\) string` var w io.Writer - fmt.Fprintln(w, a) // want `pass \[\]any as any to func Fprintln func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` - fmt.Fprintf(w, "%v", a) // want `pass \[\]any as any to func Fprintf func\(w io.Writer, format string, a \.\.\.any\) \(n int, err error\)` - fmt.Fprint(w, a) // want `pass \[\]any as any to func Fprint func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` + fmt.Fprintln(w, a) // want `pass \[\]any as any to func fmt.Fprintln func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` + fmt.Fprintf(w, "%v", a) // want `pass \[\]any as any to func fmt.Fprintf func\(w io.Writer, format string, a \.\.\.any\) \(n int, err error\)` + fmt.Fprint(w, a) // want `pass \[\]any as any to func fmt.Fprint func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` - log.Println(a) // want `pass \[\]any as any to func Println func\(v \.\.\.any\)` - log.Printf("%v", a) // want `pass \[\]any as any to func Printf func\(format string, v \.\.\.any\)` - log.Print(a) // want `pass \[\]any as any to func Print func\(v \.\.\.any\)` + log.Println(a) // want `pass \[\]any as any to func log.Println func\(v \.\.\.any\)` + log.Printf("%v", a) // want `pass \[\]any as any to func log.Printf func\(format string, v \.\.\.any\)` + log.Print(a) // want `pass \[\]any as any to func log.Print func\(v \.\.\.any\)` - log.Fatalln(a) // want `pass \[\]any as any to func Fatalln func\(v \.\.\.any\)` - log.Fatalf("%v", a) // want `pass \[\]any as any to func Fatalf func\(format string, v \.\.\.any\)` - log.Fatal(a) // want `pass \[\]any as any to func Fatal func\(v \.\.\.any\)` + log.Fatalln(a) // want `pass \[\]any as any to func log.Fatalln func\(v \.\.\.any\)` + log.Fatalf("%v", a) // want `pass \[\]any as any to func log.Fatalf func\(format string, v \.\.\.any\)` + log.Fatal(a) // want `pass \[\]any as any to func log.Fatal func\(v \.\.\.any\)` - log.Panicln(a) // want `pass \[\]any as any to func Panicln func\(v \.\.\.any\)` - log.Panicf("%v", a) // want `pass \[\]any as any to func Panicf func\(format string, v \.\.\.any\)` - log.Panic(a) // want `pass \[\]any as any to func Panic func\(v \.\.\.any\)` + log.Panicln(a) // want `pass \[\]any as any to func log.Panicln func\(v \.\.\.any\)` + log.Panicf("%v", a) // want `pass \[\]any as any to func log.Panicf func\(format string, v \.\.\.any\)` + log.Panic(a) // want `pass \[\]any as any to func log.Panic func\(v \.\.\.any\)` } diff --git a/testdata/src/nobuiltin/std_test.go b/testdata/src/nobuiltin/std_test.go index b1ce996..c5eb442 100644 --- a/testdata/src/nobuiltin/std_test.go +++ b/testdata/src/nobuiltin/std_test.go @@ -10,28 +10,28 @@ import ( func TestStd(t *testing.T) { var a = []any{1, 2, 3} - fmt.Println(a) // want `pass \[\]any as any to func Println func\(a \.\.\.any\) \(n int, err error\)` - fmt.Printf("%v", a) // want `pass \[\]any as any to func Printf func\(format string, a \.\.\.any\) \(n int, err error\)` - fmt.Print(a) // want `pass \[\]any as any to func Print func\(a \.\.\.any\) \(n int, err error\)` + fmt.Println(a) // want `pass \[\]any as any to func fmt.Println func\(a \.\.\.any\) \(n int, err error\)` + fmt.Printf("%v", a) // want `pass \[\]any as any to func fmt.Printf func\(format string, a \.\.\.any\) \(n int, err error\)` + fmt.Print(a) // want `pass \[\]any as any to func fmt.Print func\(a \.\.\.any\) \(n int, err error\)` - fmt.Sprintln(a) // want `pass \[\]any as any to func Sprintln func\(a \.\.\.any\) string` - fmt.Sprintf("%v", a) // want `pass \[\]any as any to func Sprintf func\(format string, a \.\.\.any\) string` - fmt.Sprint(a) // want `pass \[\]any as any to func Sprint func\(a \.\.\.any\) string` + fmt.Sprintln(a) // want `pass \[\]any as any to func fmt.Sprintln func\(a \.\.\.any\) string` + fmt.Sprintf("%v", a) // want `pass \[\]any as any to func fmt.Sprintf func\(format string, a \.\.\.any\) string` + fmt.Sprint(a) // want `pass \[\]any as any to func fmt.Sprint func\(a \.\.\.any\) string` var w io.Writer - fmt.Fprintln(w, a) // want `pass \[\]any as any to func Fprintln func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` - fmt.Fprintf(w, "%v", a) // want `pass \[\]any as any to func Fprintf func\(w io.Writer, format string, a \.\.\.any\) \(n int, err error\)` - fmt.Fprint(w, a) // want `pass \[\]any as any to func Fprint func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` + fmt.Fprintln(w, a) // want `pass \[\]any as any to func fmt.Fprintln func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` + fmt.Fprintf(w, "%v", a) // want `pass \[\]any as any to func fmt.Fprintf func\(w io.Writer, format string, a \.\.\.any\) \(n int, err error\)` + fmt.Fprint(w, a) // want `pass \[\]any as any to func fmt.Fprint func\(w io.Writer, a \.\.\.any\) \(n int, err error\)` - log.Println(a) // want `pass \[\]any as any to func Println func\(v \.\.\.any\)` - log.Printf("%v", a) // want `pass \[\]any as any to func Printf func\(format string, v \.\.\.any\)` - log.Print(a) // want `pass \[\]any as any to func Print func\(v \.\.\.any\)` + log.Println(a) // want `pass \[\]any as any to func log.Println func\(v \.\.\.any\)` + log.Printf("%v", a) // want `pass \[\]any as any to func log.Printf func\(format string, v \.\.\.any\)` + log.Print(a) // want `pass \[\]any as any to func log.Print func\(v \.\.\.any\)` - log.Fatalln(a) // want `pass \[\]any as any to func Fatalln func\(v \.\.\.any\)` - log.Fatalf("%v", a) // want `pass \[\]any as any to func Fatalf func\(format string, v \.\.\.any\)` - log.Fatal(a) // want `pass \[\]any as any to func Fatal func\(v \.\.\.any\)` + log.Fatalln(a) // want `pass \[\]any as any to func log.Fatalln func\(v \.\.\.any\)` + log.Fatalf("%v", a) // want `pass \[\]any as any to func log.Fatalf func\(format string, v \.\.\.any\)` + log.Fatal(a) // want `pass \[\]any as any to func log.Fatal func\(v \.\.\.any\)` - log.Panicln(a) // want `pass \[\]any as any to func Panicln func\(v \.\.\.any\)` - log.Panicf("%v", a) // want `pass \[\]any as any to func Panicf func\(format string, v \.\.\.any\)` - log.Panic(a) // want `pass \[\]any as any to func Panic func\(v \.\.\.any\)` + log.Panicln(a) // want `pass \[\]any as any to func log.Panicln func\(v \.\.\.any\)` + log.Panicf("%v", a) // want `pass \[\]any as any to func log.Panicf func\(format string, v \.\.\.any\)` + log.Panic(a) // want `pass \[\]any as any to func log.Panic func\(v \.\.\.any\)` }