rubinius-melbourne 2.1.0.0 → 2.2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,107 @@
1
+ describe "A Lambda node" do
2
+ parse "-> { }" do
3
+ [:lambda, [:args], [:scope, [:nil]]]
4
+ end
5
+
6
+ parse "-> { x }" do
7
+ [:lambda, [:args], [:scope, [:call, nil, :x, [:arglist]]]]
8
+ end
9
+
10
+ parse "->(a) { }" do
11
+ [:lambda, [:args, :a], [:scope, [:nil]]]
12
+ end
13
+
14
+ parse "->(a, b) { }" do
15
+ [:lambda, [:args, :a, :b], [:scope, [:nil]]]
16
+ end
17
+
18
+ parse "-> (a, b) { }" do
19
+ [:lambda, [:args, :a, :b], [:scope, [:nil]]]
20
+ end
21
+
22
+ parse "-> a, b { x }" do
23
+ [:lambda, [:args, :a, :b], [:scope, [:call, nil, :x, [:arglist]]]]
24
+ end
25
+
26
+ parse "-> (a, (b, (c, *d), *e)) { }" do
27
+ [:lambda,
28
+ [:args,
29
+ :a,
30
+ [:masgn,
31
+ [:array,
32
+ [:lasgn, :b],
33
+ [:masgn, [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]]],
34
+ [:splat, [:lasgn, :e]]],
35
+ [:lvar, :"_:1"]]],
36
+ [:scope, [:nil]]]
37
+ end
38
+
39
+ parse "-> (a=1) { }" do
40
+ [:lambda, [:args, :a, [:block, [:lasgn, :a, [:lit, 1]]]], [:scope, [:nil]]]
41
+ end
42
+
43
+ parse "-> (*) { }" do
44
+ [:lambda, [:args, :*], [:scope, [:nil]]]
45
+ end
46
+
47
+ parse "-> (*a) { }" do
48
+ [:lambda, [:args, :"*a"], [:scope, [:nil]]]
49
+ end
50
+
51
+ parse "-> (a=1, b) { }" do
52
+ [:lambda, [:args, :a, :b, [:block, [:lasgn, :a, [:lit, 1]]]], [:scope, [:nil]]]
53
+ end
54
+
55
+ parse "-> (*, a) { }" do
56
+ [:lambda, [:args, :*, :a], [:scope, [:nil]]]
57
+ end
58
+
59
+ parse "-> (*a, b, c:) { }" do
60
+ [:lambda, [:args, :"*a", :b, :c, [:block, [:c]]], [:scope, [:nil]]]
61
+ end
62
+
63
+ parse "-> (*a, b, c:, **) { }" do
64
+ [:lambda, [:args, :"*a", :b, :c, :**, [:block, [:c, :**]]], [:scope, [:nil]]]
65
+ end
66
+
67
+ parse "-> (a: 1, b:) { }" do
68
+ [:lambda,
69
+ [:args, :a, :b, [:block, [:a, :b], [[:lasgn, :a, [:lit, 1]]]]],
70
+ [:scope, [:nil]]]
71
+ end
72
+
73
+ parse "-> (a: 1, b:, &l) { }" do
74
+ [:lambda,
75
+ [:args, :a, :b, :"&l", [:block, [:a, :b], [[:lasgn, :a, [:lit, 1]]]]],
76
+ [:scope, [:nil]]]
77
+ end
78
+
79
+ parse "-> (a: 1, b: 2, **k) { }" do
80
+ [:lambda,
81
+ [:args,
82
+ :a,
83
+ :b,
84
+ :"**k",
85
+ [:block,
86
+ [:a, :b, :"**k"],
87
+ [[:lasgn, :a, [:lit, 1]], [:lasgn, :b, [:lit, 2]]]]],
88
+ [:scope, [:nil]]]
89
+ end
90
+
91
+ parse "-> a, b=1, *c, d, e:, f: 2, g:, **k, &l { x + a }" do
92
+ [:lambda,
93
+ [:args,
94
+ :a,
95
+ :b,
96
+ :"*c",
97
+ :d,
98
+ :e,
99
+ :f,
100
+ :g,
101
+ :"**k",
102
+ :"&l",
103
+ [:block, [:lasgn, :b, [:lit, 1]]],
104
+ [:block, [:e, :f, :g, :"**k"], [[:lasgn, :f, [:lit, 2]]]]],
105
+ [:scope, [:call, [:call, nil, :x, [:arglist]], :+, [:arglist, [:lvar, :a]]]]]
106
+ end
107
+ end
data/spec/lit_spec.rb CHANGED
@@ -27,6 +27,22 @@ describe "A Lit node" do
27
27
  [:lit, 1]
28
28
  end
29
29
 
30
+ parse "3r" do
31
+ [:lit, (3/1)]
32
+ end
33
+
34
+ parse "1/3r" do
35
+ [:call, [:lit, 1], :/, [:arglist, [:lit, (3/1)]]]
36
+ end
37
+
38
+ parse "2i" do
39
+ [:lit, (0+2i)]
40
+ end
41
+
42
+ parse "3+2i" do
43
+ [:call, [:lit, 3], :+, [:arglist, [:lit, (0+2i)]]]
44
+ end
45
+
30
46
  parse "8000_0000" do
31
47
  [:lit, 80000000]
32
48
  end
data/spec/masgn_spec.rb CHANGED
@@ -1,375 +1,171 @@
1
1
  describe "A Masgn node" do
2
- parse "a, b.c = b.c, true" do
3
- [:masgn,
4
- [:array,
5
- [:lasgn, :a],
6
- [:attrasgn, [:call, nil, :b, [:arglist]], :c=, [:arglist]]],
7
- [:array, [:call, [:call, nil, :b, [:arglist]], :c, [:arglist]], [:true]]]
2
+ parse "a = 1, 2, 3" do
3
+ [:lasgn, :a, [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
8
4
  end
9
5
 
10
- parse "a, b = 1, 2, 3" do
11
- [:masgn,
12
- [:array, [:lasgn, :a], [:lasgn, :b]],
13
- [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
14
- end
15
-
16
- parse "a, b = c, d" do
17
- [:masgn,
18
- [:array, [:lasgn, :a], [:lasgn, :b]],
19
- [:array, [:call, nil, :c, [:arglist]], [:call, nil, :d, [:arglist]]]]
6
+ parse "a = *x" do
7
+ [:lasgn, :a, [:splat, [:call, nil, :x, [:arglist]]]]
20
8
  end
21
9
 
22
- parse "a, b, *c = 1, 2, *[3, 4]" do
23
- [:masgn,
24
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
25
- [:array, [:lit, 1], [:lit, 2], [:lit, 3], [:lit, 4]]]
10
+ parse "a, = []" do
11
+ [:masgn, [:array, [:lasgn, :a]], [:array]]
26
12
  end
27
13
 
28
- parse "a.b, a.c, _ = q" do
14
+ parse "a, b = b, a" do
29
15
  [:masgn,
30
- [:array,
31
- [:attrasgn, [:call, nil, :a, [:arglist]], :b=, [:arglist]],
32
- [:attrasgn, [:call, nil, :a, [:arglist]], :c=, [:arglist]],
33
- [:lasgn, :_]],
34
- [:to_ary, [:call, nil, :q, [:arglist]]]]
35
- end
36
-
37
- parse <<-ruby do
38
- a, i, j = [], 1, 2
39
- a[i], a[j] = a[j], a[i]
40
- ruby
41
-
42
- [:block,
43
- [:masgn,
44
- [:array, [:lasgn, :a], [:lasgn, :i], [:lasgn, :j]],
45
- [:array, [:array], [:lit, 1], [:lit, 2]]],
46
- [:masgn,
47
- [:array,
48
- [:attrasgn, [:lvar, :a], :[]=, [:arglist, [:lvar, :i]]],
49
- [:attrasgn, [:lvar, :a], :[]=, [:arglist, [:lvar, :j]]]],
50
- [:array,
51
- [:call, [:lvar, :a], :[], [:arglist, [:lvar, :j]]],
52
- [:call, [:lvar, :a], :[], [:arglist, [:lvar, :i]]]]]]
53
- end
54
-
55
- parse <<-ruby do
56
- c, d, e, f = [], 1, 2, 3
57
- a, *b = c[d] = f(e, f, c)
58
- ruby
59
-
60
- [:block,
61
- [:masgn,
62
- [:array, [:lasgn, :c], [:lasgn, :d], [:lasgn, :e], [:lasgn, :f]],
63
- [:array, [:array], [:lit, 1], [:lit, 2], [:lit, 3]]],
64
- [:masgn,
65
- [:array, [:lasgn, :a], [:splat, [:lasgn, :b]]],
66
- [:to_ary,
67
- [:attrasgn,
68
- [:lvar, :c],
69
- :[]=,
70
- [:arglist,
71
- [:lvar, :d],
72
- [:call, nil, :f, [:arglist, [:lvar, :e], [:lvar, :f], [:lvar, :c]]]]]]]]
16
+ [:array, [:lasgn, :a], [:lasgn, :b]],
17
+ [:array, [:lvar, :b], [:lvar, :a]]]
73
18
  end
74
19
 
75
- parse "a, b.c = d, e" do
20
+ parse "a, _, b, _, c, _ = x" do
76
21
  [:masgn,
77
22
  [:array,
78
23
  [:lasgn, :a],
79
- [:attrasgn, [:call, nil, :b, [:arglist]], :c=, [:arglist]]],
80
- [:array, [:call, nil, :d, [:arglist]], [:call, nil, :e, [:arglist]]]]
24
+ [:lasgn, :_],
25
+ [:lasgn, :b],
26
+ [:lasgn, :_],
27
+ [:lasgn, :c],
28
+ [:lasgn, :_]],
29
+ [:call, nil, :x, [:arglist]]]
81
30
  end
82
31
 
83
- parse "*a.m = *b" do
32
+ parse "a.b, a.c = x" do
84
33
  [:masgn,
85
34
  [:array,
86
- [:splat, [:attrasgn, [:call, nil, :a, [:arglist]], :m=, [:arglist]]]],
87
- [:splat, [:call, nil, :b, [:arglist]]]]
35
+ [:attrasgn, [:call, nil, :a, [:arglist]], :b=, [:arglist]],
36
+ [:attrasgn, [:call, nil, :a, [:arglist]], :c=, [:arglist]]],
37
+ [:call, nil, :x, [:arglist]]]
88
38
  end
89
39
 
90
- parse "*a.m = b" do
40
+ parse "a[0], a[1] = 1, 2" do
91
41
  [:masgn,
92
42
  [:array,
93
- [:splat, [:attrasgn, [:call, nil, :a, [:arglist]], :m=, [:arglist]]]],
94
- [:array, [:call, nil, :b, [:arglist]]]]
95
- end
96
-
97
- parse "A, B, C = 1, 2, 3" do
98
- [:masgn,
99
- [:array, [:cdecl, :A], [:cdecl, :B], [:cdecl, :C]],
100
- [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
101
- end
102
-
103
- parse "* = 1, 2" do
104
- [:masgn, [:array, [:splat]], [:array, [:lit, 1], [:lit, 2]]]
105
- end
106
-
107
- parse "*$a = b" do
108
- [:masgn,
109
- [:array, [:splat, [:gasgn, :$a]]],
110
- [:array, [:call, nil, :b, [:arglist]]]]
111
- end
112
-
113
- parse "*$a = *b" do
114
- [:masgn,
115
- [:array, [:splat, [:gasgn, :$a]]],
116
- [:splat, [:call, nil, :b, [:arglist]]]]
117
- end
118
-
119
- parse "a, @b = c, d" do
120
- [:masgn,
121
- [:array, [:lasgn, :a], [:iasgn, :@b]],
122
- [:array, [:call, nil, :c, [:arglist]], [:call, nil, :d, [:arglist]]]]
123
- end
124
-
125
- parse "*@a = b" do
126
- [:masgn,
127
- [:array, [:splat, [:iasgn, :@a]]],
128
- [:array, [:call, nil, :b, [:arglist]]]]
129
- end
130
-
131
- parse "*@a = *b" do
132
- [:masgn,
133
- [:array, [:splat, [:iasgn, :@a]]],
134
- [:splat, [:call, nil, :b, [:arglist]]]]
135
- end
136
-
137
- parse "@a, $b = 1, 2" do
138
- [:masgn,
139
- [:array, [:iasgn, :@a], [:gasgn, :$b]],
140
- [:array, [:lit, 1], [:lit, 2]]]
141
- end
142
-
143
- parse "a, b = (@a = 1), @a" do
144
- [:masgn,
145
- [:array, [:lasgn, :a], [:lasgn, :b]],
146
- [:array, [:iasgn, :@a, [:lit, 1]], [:ivar, :@a]]]
147
- end
148
-
149
- parse "@@a, @@b = 1, 2" do
150
- [:masgn,
151
- [:array, [:cvasgn, :@@a], [:cvasgn, :@@b]],
152
- [:array, [:lit, 1], [:lit, 2]]]
153
- end
154
-
155
- parse "a, b, *c = 1, 2, 3" do
156
- [:masgn,
157
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
158
- [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
159
- end
160
-
161
- parse "a, b, *c = 1, 2" do
162
- [:masgn,
163
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
164
- [:array, [:lit, 1], [:lit, 2]]]
165
- end
166
-
167
- parse "a, b, c, *d = 1, 2" do
168
- [:masgn,
169
- [:array, [:lasgn, :a], [:lasgn, :b], [:lasgn, :c], [:splat, [:lasgn, :d]]],
43
+ [:attrasgn, [:call, nil, :a, [:arglist]], :[]=, [:arglist, [:lit, 0]]],
44
+ [:attrasgn, [:call, nil, :a, [:arglist]], :[]=, [:arglist, [:lit, 1]]]],
170
45
  [:array, [:lit, 1], [:lit, 2]]]
171
46
  end
172
47
 
173
- parse "a, b, c = *d" do
174
- [:masgn,
175
- [:array, [:lasgn, :a], [:lasgn, :b], [:lasgn, :c]],
176
- [:splat, [:call, nil, :d, [:arglist]]]]
177
- end
178
-
179
- parse "a, b, c = 1, *d" do
180
- [:masgn,
181
- [:array, [:lasgn, :a], [:lasgn, :b], [:lasgn, :c]],
182
- [:argscat, [:array, [:lit, 1]], [:call, nil, :d, [:arglist]]]]
183
- end
184
-
185
- parse "a, b, *c = *d" do
186
- [:masgn,
187
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
188
- [:splat, [:call, nil, :d, [:arglist]]]]
48
+ parse "* = *1" do
49
+ [:masgn, [:array, [:splat]], [:splat, [:lit, 1]]]
189
50
  end
190
51
 
191
- parse "*a = 1, 2, 3" do
192
- [:masgn,
193
- [:array, [:splat, [:lasgn, :a]]],
194
- [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
52
+ parse "*a = nil" do
53
+ [:masgn, [:array, [:splat, [:lasgn, :a]]], [:nil]]
195
54
  end
196
55
 
197
- parse "*a = b" do
56
+ parse "*a = x, y, z" do
198
57
  [:masgn,
199
58
  [:array, [:splat, [:lasgn, :a]]],
200
- [:array, [:call, nil, :b, [:arglist]]]]
59
+ [:array,
60
+ [:call, nil, :x, [:arglist]],
61
+ [:call, nil, :y, [:arglist]],
62
+ [:call, nil, :z, [:arglist]]]]
201
63
  end
202
64
 
203
- parse "*a = *b" do
65
+ parse "*a = x, y, *z" do
204
66
  [:masgn,
205
67
  [:array, [:splat, [:lasgn, :a]]],
206
- [:splat, [:call, nil, :b, [:arglist]]]]
68
+ [:argscat,
69
+ [:array, [:call, nil, :x, [:arglist]], [:call, nil, :y, [:arglist]]],
70
+ [:call, nil, :z, [:arglist]]]]
207
71
  end
208
72
 
209
- parse "a, (b, c) = [1, [2, 3]]" do
73
+ parse "a, *b, c = *x" do
210
74
  [:masgn,
211
- [:array, [:lasgn, :a], [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]]]],
212
- [:to_ary, [:array, [:lit, 1], [:array, [:lit, 2], [:lit, 3]]]]]
75
+ [:array, [:lasgn, :a], [:splat, [:lasgn, :b]]],
76
+ [:lasgn, :c],
77
+ [:splat, [:call, nil, :x, [:arglist]]]]
213
78
  end
214
79
 
215
- parse "a, = *[[[1]]]" do
216
- [:masgn,
217
- [:array, [:lasgn, :a]],
218
- [:splat, [:array, [:array, [:array, [:lit, 1]]]]]]
219
- end
220
-
221
- parse "a, b, * = c" do
222
- [:masgn,
223
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat]],
224
- [:to_ary, [:call, nil, :c, [:arglist]]]]
225
- end
226
-
227
- parse "a, b, = c" do
228
- [:masgn,
229
- [:array, [:lasgn, :a], [:lasgn, :b]],
230
- [:to_ary, [:call, nil, :c, [:arglist]]]]
231
- end
232
-
233
- parse "a, b, c = m d" do
234
- [:masgn,
235
- [:array, [:lasgn, :a], [:lasgn, :b], [:lasgn, :c]],
236
- [:to_ary, [:call, nil, :m, [:arglist, [:call, nil, :d, [:arglist]]]]]]
237
- end
238
-
239
- parse "a, b, *c = d, e, f, g" do
80
+ parse "a, b, *c = *[]" do
240
81
  [:masgn,
241
82
  [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
242
- [:array,
243
- [:call, nil, :d, [:arglist]],
244
- [:call, nil, :e, [:arglist]],
245
- [:call, nil, :f, [:arglist]],
246
- [:call, nil, :g, [:arglist]]]]
83
+ [:splat, [:array]]]
247
84
  end
248
85
 
249
- parse "a, b, *c = d.e(\"f\")" do
250
- [:masgn,
251
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
252
- [:to_ary, [:call, [:call, nil, :d, [:arglist]], :e, [:arglist, [:str, "f"]]]]]
86
+ parse "(*) = x" do
87
+ [:masgn, [:array, [:splat]], [:call, nil, :x, [:arglist]]]
253
88
  end
254
89
 
255
- parse "a, b, *c = d" do
256
- [:masgn,
257
- [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
258
- [:to_ary, [:call, nil, :d, [:arglist]]]]
90
+ parse "(*) = *x" do
91
+ [:masgn, [:array, [:splat]], [:splat, [:call, nil, :x, [:arglist]]]]
259
92
  end
260
93
 
261
- parse "a, b = c" do
94
+ parse "(*a) = (x = 1), *[1]" do
262
95
  [:masgn,
263
- [:array, [:lasgn, :a], [:lasgn, :b]],
264
- [:to_ary, [:call, nil, :c, [:arglist]]]]
265
- end
266
-
267
- parse <<-ruby do
268
- m do
269
- a, b = 1, 2
270
- next
271
- end
272
- ruby
273
-
274
- [:call,
275
- nil,
276
- :m,
277
- [:arglist,
278
- [:iter,
279
- [:args],
280
- [:block,
281
- [:masgn,
282
- [:array, [:lasgn, :a], [:lasgn, :b]],
283
- [:array, [:lit, 1], [:lit, 2]]],
284
- [:next]]]]]
285
- end
286
-
287
- parse "a, (b, c) = 1" do
288
- [:masgn,
289
- [:array, [:lasgn, :a], [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]]]],
290
- [:to_ary, [:lit, 1]]]
291
- end
292
-
293
- parse "a, (b, c) = *1" do
294
- [:masgn,
295
- [:array, [:lasgn, :a], [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]]]],
296
- [:splat, [:lit, 1]]]
297
- end
298
-
299
- parse "a, (b, c) = 1, 2, 3" do
300
- [:masgn,
301
- [:array, [:lasgn, :a], [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]]]],
302
- [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
96
+ [:array, [:splat, [:lasgn, :a]]],
97
+ [:array, [:lasgn, :x, [:lit, 1]], [:lit, 1]]]
303
98
  end
304
99
 
305
- parse "a, (b, *c), d = 1, 2, 3, 4" do
100
+ parse "(*a), *b, c = *x" do
306
101
  [:masgn,
307
- [:array,
308
- [:lasgn, :a],
309
- [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]]],
310
- [:lasgn, :d]],
311
- [:array, [:lit, 1], [:lit, 2], [:lit, 3], [:lit, 4]]]
102
+ [:array, [:masgn, [:array, [:splat, [:lasgn, :a]]]], [:splat, [:lasgn, :b]]],
103
+ [:lasgn, :c],
104
+ [:splat, [:call, nil, :x, [:arglist]]]]
312
105
  end
313
106
 
314
- parse "a, (b, c) = 1, *2" do
107
+ parse "(*a, b) = m x" do
315
108
  [:masgn,
316
- [:array, [:lasgn, :a], [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]]]],
317
- [:argscat, [:array, [:lit, 1]], [:lit, 2]]]
109
+ [:array, [:splat, [:lasgn, :a]]],
110
+ [:lasgn, :b],
111
+ [:call, nil, :m, [:arglist, [:call, nil, :x, [:arglist]]]]]
318
112
  end
319
113
 
320
- parse "a, (b, *c) = 1" do
114
+ parse "(*a, b), (*c, d) = 1, 2, 3" do
321
115
  [:masgn,
322
116
  [:array,
323
- [:lasgn, :a],
324
- [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]]]],
325
- [:to_ary, [:lit, 1]]]
117
+ [:masgn, [:array, [:splat, [:lasgn, :a]]], [:lasgn, :b]],
118
+ [:masgn, [:array, [:splat, [:lasgn, :c]]], [:lasgn, :d]]],
119
+ [:array, [:lit, 1], [:lit, 2], [:lit, 3]]]
326
120
  end
327
121
 
328
- parse "a, (b, *c) = 1, 2" do
122
+ parse "(a, b, *c, d), (*e, f, g), (*h) = x.y, *x.z" do
329
123
  [:masgn,
330
124
  [:array,
331
- [:lasgn, :a],
332
- [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]]]],
333
- [:array, [:lit, 1], [:lit, 2]]]
125
+ [:masgn,
126
+ [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
127
+ [:lasgn, :d]],
128
+ [:masgn, [:array, [:splat, [:lasgn, :e]]], [:lasgn, :f], [:lasgn, :g]],
129
+ [:masgn, [:array, [:splat, [:lasgn, :h]]]]],
130
+ [:argscat,
131
+ [:array, [:call, [:call, nil, :x, [:arglist]], :y, [:arglist]]],
132
+ [:call, [:call, nil, :x, [:arglist]], :z, [:arglist]]]]
334
133
  end
335
134
 
336
- parse "a, (b, *c) = *1" do
135
+ parse "a, (b, (c, *d), *e) = x[0], *y[0]" do
337
136
  [:masgn,
338
137
  [:array,
339
138
  [:lasgn, :a],
340
- [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]]]],
341
- [:splat, [:lit, 1]]]
139
+ [:masgn,
140
+ [:array,
141
+ [:lasgn, :b],
142
+ [:masgn, [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]]],
143
+ [:splat, [:lasgn, :e]]]]],
144
+ [:argscat,
145
+ [:array, [:call, [:call, nil, :x, [:arglist]], :[], [:arglist, [:lit, 0]]]],
146
+ [:call, [:call, nil, :y, [:arglist]], :[], [:arglist, [:lit, 0]]]]]
342
147
  end
343
148
 
344
- parse "a, (b, *c) = 1, *2" do
149
+ parse "a, (b, (c, *d, (e, (*f)), g), (h, (i, j), k)) = x.y(q, r)" do
345
150
  [:masgn,
346
151
  [:array,
347
152
  [:lasgn, :a],
348
- [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]]]],
349
- [:argscat, [:array, [:lit, 1]], [:lit, 2]]]
350
- end
351
-
352
- parse "a, (*b) = 1" do
353
- [:masgn,
354
- [:array, [:lasgn, :a], [:masgn, [:array, [:splat, [:lasgn, :b]]]]],
355
- [:to_ary, [:lit, 1]]]
356
- end
357
-
358
- parse "a, (*b) = 1, 2" do
359
- [:masgn,
360
- [:array, [:lasgn, :a], [:masgn, [:array, [:splat, [:lasgn, :b]]]]],
361
- [:array, [:lit, 1], [:lit, 2]]]
362
- end
363
-
364
- parse "a, (*b) = *1" do
365
- [:masgn,
366
- [:array, [:lasgn, :a], [:masgn, [:array, [:splat, [:lasgn, :b]]]]],
367
- [:splat, [:lit, 1]]]
368
- end
369
-
370
- parse "a, (*b) = 1, *2" do
371
- [:masgn,
372
- [:array, [:lasgn, :a], [:masgn, [:array, [:splat, [:lasgn, :b]]]]],
373
- [:argscat, [:array, [:lit, 1]], [:lit, 2]]]
153
+ [:masgn,
154
+ [:array,
155
+ [:lasgn, :b],
156
+ [:masgn,
157
+ [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]],
158
+ [:masgn,
159
+ [:array, [:lasgn, :e], [:masgn, [:array, [:splat, [:lasgn, :f]]]]]],
160
+ [:lasgn, :g]],
161
+ [:masgn,
162
+ [:array,
163
+ [:lasgn, :h],
164
+ [:masgn, [:array, [:lasgn, :i], [:lasgn, :j]]],
165
+ [:lasgn, :k]]]]]],
166
+ [:call,
167
+ [:call, nil, :x, [:arglist]],
168
+ :y,
169
+ [:arglist, [:call, nil, :q, [:arglist]], [:call, nil, :r, [:arglist]]]]]
374
170
  end
375
171
  end