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] | 
