diff options
-rw-r--r-- | gocapturedrefrace.go | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/gocapturedrefrace.go b/gocapturedrefrace.go index de3bf10..50a0297 100644 --- a/gocapturedrefrace.go +++ b/gocapturedrefrace.go @@ -36,15 +36,15 @@ func run(pass *analysis.Pass) (interface{}, error) { fmt.Printf("%#v\n", goStmt) fmt.Printf("closure arguments: %#v\n", goStmt.Call.Args) - for _, arg := range goStmt.Call.Args { - argIdent, ok := arg.(*ast.Ident) - if !ok { - return true - } - - fmt.Printf("argIdent: %s: %#v\n", argIdent.Name, argIdent.Obj) - // Doesn't include `(s *aStruct)` which is a `*ast.UnaryExpr`, not a `*ast.Ident`. - } + // for _, arg := range goStmt.Call.Args { + // argIdent, ok := arg.(*ast.Ident) + // if !ok { + // return true + // } + // + // fmt.Printf("argIdent: %s: %#v\n", argIdent.Name, argIdent.Obj) + // // Doesn't include `(s *aStruct)` which is a `*ast.UnaryExpr`, not a `*ast.Ident`. + // } // TODO: How to get types.Func or {ast,types}.Scope of function literal? funcIdent, ok := goStmt.Call.Fun.(*ast.Ident) @@ -67,6 +67,17 @@ func run(pass *analysis.Pass) (interface{}, error) { return true } + fmt.Printf("funcLit params: %#v\n", funcLit.Type.Params.List) + for _, arg := range funcLit.Type.Params.List { + fmt.Printf("funcLit param:") + + for _, argNameIdent := range arg.Names { + fmt.Printf("%#v, ", argNameIdent.Name) + } + + fmt.Println() + } + // scope := pass.TypesInfo.Scopes[funcLit] // scope := pass.TypesInfo.Scopes[goStmt] // scope := pass.TypesInfo.Scopes[funcLit.Body] |