aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/raeperd/recvcheck/analyzer.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-01-22 16:07:17 +0100
committerTaras Madan <tarasmadan@google.com>2025-01-23 10:42:36 +0000
commit7b4377ad9d8a7205416df8d6217ef2b010f89481 (patch)
treee6fec4fd12ff807a16d847923f501075bf71d16c /vendor/github.com/raeperd/recvcheck/analyzer.go
parent475a4c203afb8b7d3af51c4fd32bb170ff32a45e (diff)
vendor: delete
Diffstat (limited to 'vendor/github.com/raeperd/recvcheck/analyzer.go')
-rw-r--r--vendor/github.com/raeperd/recvcheck/analyzer.go69
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
-}