diff --git a/gocognit.go b/gocognit.go index 418c163..a36a693 100644 --- a/gocognit.go +++ b/gocognit.go @@ -4,6 +4,7 @@ import ( "fmt" "go/ast" "go/token" + "strings" "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/analysis/passes/inspect" @@ -57,6 +58,15 @@ func recvString(recv ast.Expr) string { return t.Name case *ast.StarExpr: return "*" + recvString(t.X) + case *ast.IndexExpr: + return recvString(t.X) + "[" + recvString(t.Index) + "]" + case *ast.IndexListExpr: + targs := make([]string, 0, len(t.Indices)) + for _, exp := range t.Indices { + targs = append(targs, recvString(exp)) + } + + return recvString(t.X) + "[" + strings.Join(targs, ", ") + "]" } return "BADRECV" }