aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2023-05-16 20:44:34 +0200
committerTeddy Wing2023-05-16 20:45:04 +0200
commit9a15014411a93d47b7056248754cde43aaf19382 (patch)
tree6bc340b3482d9318ee188a9a25b7a084d14e0e28
parent21373e26ed585b0b7cbc29f31b71744ce6409934 (diff)
downloadgocapturedrefrace-9a15014411a93d47b7056248754cde43aaf19382.tar.bz2
Try to get the arguments of the closure from `goStmt.Call.Args`
-rw-r--r--gocapturedrefrace.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/gocapturedrefrace.go b/gocapturedrefrace.go
index 3174a09..de3bf10 100644
--- a/gocapturedrefrace.go
+++ b/gocapturedrefrace.go
@@ -34,6 +34,17 @@ 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`.
+ }
// TODO: How to get types.Func or {ast,types}.Scope of function literal?
funcIdent, ok := goStmt.Call.Fun.(*ast.Ident)