diff options
| author | Taras Madan <tarasmadan@google.com> | 2025-01-22 16:07:17 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-01-23 10:42:36 +0000 |
| commit | 7b4377ad9d8a7205416df8d6217ef2b010f89481 (patch) | |
| tree | e6fec4fd12ff807a16d847923f501075bf71d16c /vendor/github.com/raeperd/recvcheck/analyzer.go | |
| parent | 475a4c203afb8b7d3af51c4fd32bb170ff32a45e (diff) | |
vendor: delete
Diffstat (limited to 'vendor/github.com/raeperd/recvcheck/analyzer.go')
| -rw-r--r-- | vendor/github.com/raeperd/recvcheck/analyzer.go | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/vendor/github.com/raeperd/recvcheck/analyzer.go b/vendor/github.com/raeperd/recvcheck/analyzer.go deleted file mode 100644 index e80dfc577..000000000 --- a/vendor/github.com/raeperd/recvcheck/analyzer.go +++ /dev/null @@ -1,69 +0,0 @@ -package recvcheck - -import ( - "go/ast" - - "golang.org/x/tools/go/analysis" - "golang.org/x/tools/go/analysis/passes/inspect" - "golang.org/x/tools/go/ast/inspector" -) - -var Analyzer = &analysis.Analyzer{ - Name: "recvcheck", - Doc: "checks for receiver type consistency", - Run: run, - Requires: []*analysis.Analyzer{inspect.Analyzer}, -} - -func run(pass *analysis.Pass) (any, error) { - inspector := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector) - - structs := map[string]*structType{} - inspector.Preorder([]ast.Node{(*ast.FuncDecl)(nil)}, func(n ast.Node) { - funcDecl, ok := n.(*ast.FuncDecl) - if !ok || funcDecl.Recv == nil || len(funcDecl.Recv.List) != 1 { - return - } - - var recv *ast.Ident - var isStar bool - switch recvType := funcDecl.Recv.List[0].Type.(type) { - case *ast.StarExpr: - isStar = true - if recv, ok = recvType.X.(*ast.Ident); !ok { - return - } - case *ast.Ident: - recv = recvType - default: - return - } - - var st *structType - st, ok = structs[recv.Name] - if !ok { - structs[recv.Name] = &structType{recv: recv.Name} - st = structs[recv.Name] - } - - if isStar { - st.numStarMethod++ - } else { - st.numTypeMethod++ - } - }) - - for _, st := range structs { - if st.numStarMethod > 0 && st.numTypeMethod > 0 { - pass.Reportf(pass.Pkg.Scope().Lookup(st.recv).Pos(), "the methods of %q use pointer receiver and non-pointer receiver.", st.recv) - } - } - - return nil, nil -} - -type structType struct { - recv string - numStarMethod int - numTypeMethod int -} |
