blob: 3782308b5eb5d98b7c2ba87d7d7eabe24aef24f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
|
@ ProgramNode (location: (0...293))
├── locals: [:abc, :foo, :bar, :baz]
└── statements:
@ StatementsNode (location: (0...293))
└── body: (length: 24)
├── @ ClassVariableReadNode (location: (0...5))
│ └── name: :@@abc
├── @ ClassVariableWriteNode (location: (7...16))
│ ├── name: :@@abc
│ ├── name_loc: (7...12) = "@@abc"
│ ├── value:
│ │ @ IntegerNode (location: (15...16))
│ │ └── flags: decimal
│ └── operator_loc: (13...14) = "="
├── @ MultiWriteNode (location: (18...34))
│ ├── targets: (length: 2)
│ │ ├── @ ClassVariableTargetNode (location: (18...23))
│ │ │ └── name: :@@foo
│ │ └── @ ClassVariableTargetNode (location: (25...30))
│ │ └── name: :@@bar
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (31...32) = "="
│ └── value:
│ @ IntegerNode (location: (33...34))
│ └── flags: decimal
├── @ ClassVariableWriteNode (location: (36...48))
│ ├── name: :@@foo
│ ├── name_loc: (36...41) = "@@foo"
│ ├── value:
│ │ @ ArrayNode (location: (44...48))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (44...45))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (47...48))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (42...43) = "="
├── @ GlobalVariableWriteNode (location: (50...58))
│ ├── name: :$abc
│ ├── name_loc: (50...54) = "$abc"
│ ├── value:
│ │ @ IntegerNode (location: (57...58))
│ │ └── flags: decimal
│ └── operator_loc: (55...56) = "="
├── @ GlobalVariableReadNode (location: (60...64))
│ └── name: :$abc
├── @ InstanceVariableReadNode (location: (66...70))
│ └── name: :@abc
├── @ InstanceVariableWriteNode (location: (72...80))
│ ├── name: :@abc
│ ├── name_loc: (72...76) = "@abc"
│ ├── value:
│ │ @ IntegerNode (location: (79...80))
│ │ └── flags: decimal
│ └── operator_loc: (77...78) = "="
├── @ CallNode (location: (82...83))
│ ├── receiver: ∅
│ ├── call_operator_loc: ∅
│ ├── message_loc: (82...83) = "a"
│ ├── opening_loc: ∅
│ ├── arguments: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅
│ ├── flags: variable_call
│ └── name: "a"
├── @ LocalVariableWriteNode (location: (85...92))
│ ├── name: :abc
│ ├── depth: 0
│ ├── name_loc: (85...88) = "abc"
│ ├── value:
│ │ @ IntegerNode (location: (91...92))
│ │ └── flags: decimal
│ └── operator_loc: (89...90) = "="
├── @ MultiWriteNode (location: (94...108))
│ ├── targets: (length: 2)
│ │ ├── @ GlobalVariableTargetNode (location: (94...98))
│ │ │ └── name: :$foo
│ │ └── @ GlobalVariableTargetNode (location: (100...104))
│ │ └── name: :$bar
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (105...106) = "="
│ └── value:
│ @ IntegerNode (location: (107...108))
│ └── flags: decimal
├── @ GlobalVariableWriteNode (location: (110...121))
│ ├── name: :$foo
│ ├── name_loc: (110...114) = "$foo"
│ ├── value:
│ │ @ ArrayNode (location: (117...121))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (117...118))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (120...121))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (115...116) = "="
├── @ MultiWriteNode (location: (123...137))
│ ├── targets: (length: 2)
│ │ ├── @ InstanceVariableTargetNode (location: (123...127))
│ │ │ └── name: :@foo
│ │ └── @ InstanceVariableTargetNode (location: (129...133))
│ │ └── name: :@bar
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (134...135) = "="
│ └── value:
│ @ IntegerNode (location: (136...137))
│ └── flags: decimal
├── @ InstanceVariableWriteNode (location: (139...150))
│ ├── name: :@foo
│ ├── name_loc: (139...143) = "@foo"
│ ├── value:
│ │ @ ArrayNode (location: (146...150))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (146...147))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (149...150))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (144...145) = "="
├── @ LocalVariableWriteNode (location: (152...159))
│ ├── name: :foo
│ ├── depth: 0
│ ├── name_loc: (152...155) = "foo"
│ ├── value:
│ │ @ IntegerNode (location: (158...159))
│ │ └── flags: decimal
│ └── operator_loc: (156...157) = "="
├── @ LocalVariableWriteNode (location: (161...171))
│ ├── name: :foo
│ ├── depth: 0
│ ├── name_loc: (161...164) = "foo"
│ ├── value:
│ │ @ ArrayNode (location: (167...171))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (167...168))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (170...171))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (165...166) = "="
├── @ LocalVariableWriteNode (location: (173...183))
│ ├── name: :foo
│ ├── depth: 0
│ ├── name_loc: (173...176) = "foo"
│ ├── value:
│ │ @ ArrayNode (location: (179...183))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (179...180))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (182...183))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (177...178) = "="
├── @ MultiWriteNode (location: (185...198))
│ ├── targets: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (185...188))
│ │ │ ├── name: :foo
│ │ │ └── depth: 0
│ │ └── @ SplatNode (location: (190...191))
│ │ ├── operator_loc: (190...191) = "*"
│ │ └── expression: ∅
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (192...193) = "="
│ └── value:
│ @ ArrayNode (location: (194...198))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (194...195))
│ │ │ └── flags: decimal
│ │ └── @ IntegerNode (location: (197...198))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
├── @ MultiWriteNode (location: (200...211))
│ ├── targets: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (200...203))
│ │ │ ├── name: :foo
│ │ │ └── depth: 0
│ │ └── @ SplatNode (location: (203...204))
│ │ ├── operator_loc: (203...204) = ","
│ │ └── expression: ∅
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (205...206) = "="
│ └── value:
│ @ ArrayNode (location: (207...211))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (207...208))
│ │ │ └── flags: decimal
│ │ └── @ IntegerNode (location: (210...211))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
├── @ MultiWriteNode (location: (213...229))
│ ├── targets: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (213...216))
│ │ │ ├── name: :foo
│ │ │ └── depth: 0
│ │ └── @ SplatNode (location: (218...222))
│ │ ├── operator_loc: (218...219) = "*"
│ │ └── expression:
│ │ @ LocalVariableTargetNode (location: (219...222))
│ │ ├── name: :bar
│ │ └── depth: 0
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (223...224) = "="
│ └── value:
│ @ ArrayNode (location: (225...229))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (225...226))
│ │ │ └── flags: decimal
│ │ └── @ IntegerNode (location: (228...229))
│ │ └── flags: decimal
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
├── @ MultiWriteNode (location: (231...258))
│ ├── targets: (length: 2)
│ │ ├── @ LocalVariableTargetNode (location: (231...234))
│ │ │ ├── name: :foo
│ │ │ └── depth: 0
│ │ └── @ MultiTargetNode (location: (236...246))
│ │ ├── targets: (length: 2)
│ │ │ ├── @ LocalVariableTargetNode (location: (237...240))
│ │ │ │ ├── name: :bar
│ │ │ │ └── depth: 0
│ │ │ └── @ LocalVariableTargetNode (location: (242...245))
│ │ │ ├── name: :baz
│ │ │ └── depth: 0
│ │ ├── lparen_loc: (236...237) = "("
│ │ └── rparen_loc: (245...246) = ")"
│ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅
│ ├── operator_loc: (247...248) = "="
│ └── value:
│ @ ArrayNode (location: (249...258))
│ ├── elements: (length: 2)
│ │ ├── @ IntegerNode (location: (249...250))
│ │ │ └── flags: decimal
│ │ └── @ ArrayNode (location: (252...258))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (253...254))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (256...257))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: (252...253) = "["
│ │ └── closing_loc: (257...258) = "]"
│ ├── opening_loc: ∅
│ └── closing_loc: ∅
├── @ LocalVariableWriteNode (location: (260...270))
│ ├── name: :foo
│ ├── depth: 0
│ ├── name_loc: (260...263) = "foo"
│ ├── value:
│ │ @ ArrayNode (location: (266...270))
│ │ ├── elements: (length: 1)
│ │ │ └── @ SplatNode (location: (266...270))
│ │ │ ├── operator_loc: (266...267) = "*"
│ │ │ └── expression:
│ │ │ @ LocalVariableReadNode (location: (267...270))
│ │ │ ├── name: :bar
│ │ │ └── depth: 0
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (264...265) = "="
├── @ ConstantWriteNode (location: (272...282))
│ ├── name: :Foo
│ ├── name_loc: (272...275) = "Foo"
│ ├── value:
│ │ @ ArrayNode (location: (278...282))
│ │ ├── elements: (length: 2)
│ │ │ ├── @ IntegerNode (location: (278...279))
│ │ │ │ └── flags: decimal
│ │ │ └── @ IntegerNode (location: (281...282))
│ │ │ └── flags: decimal
│ │ ├── opening_loc: ∅
│ │ └── closing_loc: ∅
│ └── operator_loc: (276...277) = "="
└── @ ParenthesesNode (location: (284...293))
├── body:
│ @ StatementsNode (location: (285...292))
│ └── body: (length: 3)
│ ├── @ CallNode (location: (285...286))
│ │ ├── receiver: ∅
│ │ ├── call_operator_loc: ∅
│ │ ├── message_loc: (285...286) = "a"
│ │ ├── opening_loc: ∅
│ │ ├── arguments: ∅
│ │ ├── closing_loc: ∅
│ │ ├── block: ∅
│ │ ├── flags: variable_call
│ │ └── name: "a"
│ ├── @ CallNode (location: (288...289))
│ │ ├── receiver: ∅
│ │ ├── call_operator_loc: ∅
│ │ ├── message_loc: (288...289) = "b"
│ │ ├── opening_loc: ∅
│ │ ├── arguments: ∅
│ │ ├── closing_loc: ∅
│ │ ├── block: ∅
│ │ ├── flags: variable_call
│ │ └── name: "b"
│ └── @ CallNode (location: (291...292))
│ ├── receiver: ∅
│ ├── call_operator_loc: ∅
│ ├── message_loc: (291...292) = "c"
│ ├── opening_loc: ∅
│ ├── arguments: ∅
│ ├── closing_loc: ∅
│ ├── block: ∅
│ ├── flags: variable_call
│ └── name: "c"
├── opening_loc: (284...285) = "("
└── closing_loc: (292...293) = ")"
|