Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cristaloleg/ee59a952489e0dbf8158088d817228d6 to your computer and use it in GitHub Desktop.
Save cristaloleg/ee59a952489e0dbf8158088d817228d6 to your computer and use it in GitHub Desktop.
➜ astify git:(master) ✗ ast-walker blah_test.go
0 *ast.File {
1 . Package: blah_test.go:1:1
2 . Name: *ast.Ident {
3 . . NamePos: blah_test.go:1:9
4 . . Name: "astify"
5 . }
6 . Decls: []ast.Decl (len = 2) {
7 . . 0: *ast.FuncDecl {
8 . . . Name: *ast.Ident {
9 . . . . NamePos: blah_test.go:3:6
10 . . . . Name: "f"
11 . . . . Obj: *ast.Object {
12 . . . . . Kind: func
13 . . . . . Name: "f"
14 . . . . . Decl: *(obj @ 7)
15 . . . . }
16 . . . }
17 . . . Type: *ast.FuncType {
18 . . . . Func: blah_test.go:3:1
19 . . . . Params: *ast.FieldList {
20 . . . . . Opening: blah_test.go:3:7
21 . . . . . Closing: blah_test.go:3:8
22 . . . . }
23 . . . }
24 . . . Body: *ast.BlockStmt {
25 . . . . Lbrace: blah_test.go:3:10
26 . . . . List: []ast.Stmt (len = 2) {
27 . . . . . 0: *ast.AssignStmt {
28 . . . . . . Lhs: []ast.Expr (len = 2) {
29 . . . . . . . 0: *ast.Ident {
30 . . . . . . . . NamePos: blah_test.go:4:2
31 . . . . . . . . Name: "a"
32 . . . . . . . . Obj: *ast.Object {
33 . . . . . . . . . Kind: var
34 . . . . . . . . . Name: "a"
35 . . . . . . . . . Decl: *(obj @ 27)
36 . . . . . . . . }
37 . . . . . . . }
38 . . . . . . . 1: *ast.Ident {
39 . . . . . . . . NamePos: blah_test.go:4:5
40 . . . . . . . . Name: "b"
41 . . . . . . . . Obj: *ast.Object {
42 . . . . . . . . . Kind: var
43 . . . . . . . . . Name: "b"
44 . . . . . . . . . Decl: *(obj @ 27)
45 . . . . . . . . }
46 . . . . . . . }
47 . . . . . . }
48 . . . . . . TokPos: blah_test.go:4:7
49 . . . . . . Tok: :=
50 . . . . . . Rhs: []ast.Expr (len = 1) {
51 . . . . . . . 0: *ast.CallExpr {
52 . . . . . . . . Fun: *ast.Ident {
53 . . . . . . . . . NamePos: blah_test.go:4:10
54 . . . . . . . . . Name: "g"
55 . . . . . . . . . Obj: *ast.Object {
56 . . . . . . . . . . Kind: func
57 . . . . . . . . . . Name: "g"
58 . . . . . . . . . . Decl: *ast.FuncDecl {
59 . . . . . . . . . . . Name: *ast.Ident {
60 . . . . . . . . . . . . NamePos: blah_test.go:8:6
61 . . . . . . . . . . . . Name: "g"
62 . . . . . . . . . . . . Obj: *(obj @ 55)
63 . . . . . . . . . . . }
64 . . . . . . . . . . . Type: *ast.FuncType {
65 . . . . . . . . . . . . Func: blah_test.go:8:1
66 . . . . . . . . . . . . Params: *ast.FieldList {
67 . . . . . . . . . . . . . Opening: blah_test.go:8:7
68 . . . . . . . . . . . . . Closing: blah_test.go:8:8
69 . . . . . . . . . . . . }
70 . . . . . . . . . . . . Results: *ast.FieldList {
71 . . . . . . . . . . . . . Opening: blah_test.go:8:10
72 . . . . . . . . . . . . . List: []*ast.Field (len = 2) {
73 . . . . . . . . . . . . . . 0: *ast.Field {
74 . . . . . . . . . . . . . . . Type: *ast.Ident {
75 . . . . . . . . . . . . . . . . NamePos: blah_test.go:8:11
76 . . . . . . . . . . . . . . . . Name: "float32"
77 . . . . . . . . . . . . . . . }
78 . . . . . . . . . . . . . . }
79 . . . . . . . . . . . . . . 1: *ast.Field {
80 . . . . . . . . . . . . . . . Type: *ast.Ident {
81 . . . . . . . . . . . . . . . . NamePos: blah_test.go:8:20
82 . . . . . . . . . . . . . . . . Name: "float64"
83 . . . . . . . . . . . . . . . }
84 . . . . . . . . . . . . . . }
85 . . . . . . . . . . . . . }
86 . . . . . . . . . . . . . Closing: blah_test.go:8:27
87 . . . . . . . . . . . . }
88 . . . . . . . . . . . }
89 . . . . . . . . . . . Body: *ast.BlockStmt {
90 . . . . . . . . . . . . Lbrace: blah_test.go:8:29
91 . . . . . . . . . . . . List: []ast.Stmt (len = 1) {
92 . . . . . . . . . . . . . 0: *ast.ReturnStmt {
93 . . . . . . . . . . . . . . Return: blah_test.go:17:2
94 . . . . . . . . . . . . . . Results: []ast.Expr (len= 2) {
95 . . . . . . . . . . . . . . . 0: *ast.BasicLit {
96 . . . . . . . . . . . . . . . . ValuePos: blah_test.go:17:9
97 . . . . . . . . . . . . . . . . Kind: INT
98 . . . . . . . . . . . . . . . . Value: "0"
99 . . . . . . . . . . . . . . . }
100 . . . . . . . . . . . . . . . 1: *ast.BasicLit {
101 . . . . . . . . . . . . . . . . ValuePos: blah_test.go:17:12
102 . . . . . . . . . . . . . . . . Kind: INT
103 . . . . . . . . . . . . . . . . Value: "0"
104 . . . . . . . . . . . . . . . }
105 . . . . . . . . . . . . . . }
106 . . . . . . . . . . . . . }
107 . . . . . . . . . . . . }
108 . . . . . . . . . . . . Rbrace: blah_test.go:18:1
109 . . . . . . . . . . . }
110 . . . . . . . . . . }
111 . . . . . . . . . }
112 . . . . . . . . }
113 . . . . . . . . Lparen: blah_test.go:4:11
114 . . . . . . . . Ellipsis: -
115 . . . . . . . . Rparen: blah_test.go:4:12
116 . . . . . . . }
117 . . . . . . }
118 . . . . . }
119 . . . . . 1: *ast.AssignStmt {
120 . . . . . . Lhs: []ast.Expr (len = 2) {
121 . . . . . . . 0: *ast.Ident {
122 . . . . . . . . NamePos: blah_test.go:5:2
123 . . . . . . . . Name: "_"
124 . . . . . . . }
125 . . . . . . . 1: *ast.Ident {
126 . . . . . . . . NamePos: blah_test.go:5:5
127 . . . . . . . . Name: "_"
128 . . . . . . . }
129 . . . . . . }
130 . . . . . . TokPos: blah_test.go:5:7
131 . . . . . . Tok: =
132 . . . . . . Rhs: []ast.Expr (len = 2) {
133 . . . . . . . 0: *ast.Ident {
134 . . . . . . . . NamePos: blah_test.go:5:9
135 . . . . . . . . Name: "a"
136 . . . . . . . . Obj: *(obj @ 32)
137 . . . . . . . }
138 . . . . . . . 1: *ast.Ident {
139 . . . . . . . . NamePos: blah_test.go:5:12
140 . . . . . . . . Name: "b"
141 . . . . . . . . Obj: *(obj @ 41)
142 . . . . . . . }
143 . . . . . . }
144 . . . . . }
145 . . . . }
146 . . . . Rbrace: blah_test.go:6:1
147 . . . }
148 . . }
149 . . 1: *(obj @ 58)
150 . }
151 . Scope: *ast.Scope {
152 . . Objects: map[string]*ast.Object (len = 2) {
153 . . . "f": *(obj @ 11)
154 . . . "g": *(obj @ 55)
155 . . }
156 . }
157 . Unresolved: []*ast.Ident (len = 2) {
158 . . 0: *(obj @ 74)
159 . . 1: *(obj @ 80)
160 . }
161 }
➜ astify git:(master) ✗
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment