decl.go 550 B

123456789101112131415161718192021222324252627282930313233
  1. package main
  2. import (
  3. "fmt"
  4. "go/ast"
  5. )
  6. func parseFuncDecl(loc string, d *ast.FuncDecl) {
  7. loc += "." + d.Name.String()
  8. // fmt.Printf("%s()\n", loc)
  9. if d.Body == nil {
  10. fmt.Println("nil func body")
  11. return
  12. }
  13. for _, s := range d.Body.List {
  14. parseStmt(loc, s)
  15. }
  16. }
  17. func parseGenDecl(loc string, d *ast.GenDecl) {
  18. loc += "/gendecl"
  19. for _, s := range d.Specs {
  20. switch s := s.(type) {
  21. case *ast.TypeSpec:
  22. parseTypeSpec(loc, s)
  23. case *ast.ImportSpec, *ast.ValueSpec:
  24. // rien
  25. default:
  26. fmt.Printf("%s/(%T)\n", loc, s)
  27. }
  28. }
  29. }