rubinius-melbourne 2.0.1.0 → 2.1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +2 -9
- data/Gemfile +0 -4
- data/Rakefile +26 -19
- data/ext/rubinius/melbourne/extconf.rb +4 -3
- data/ext/rubinius/melbourne/grammar.cpp +2 -2
- data/ext/rubinius/melbourne/grammar.y +2 -2
- data/ext/rubinius/melbourne/melbourne.cpp +4 -5
- data/lib/rubinius/melbourne/version.rb +2 -2
- data/lib/rubinius/melbourne.rb +1 -21
- data/rubinius-melbourne.gemspec +6 -3
- data/spec/alias_spec.rb +13 -18
- data/spec/and_spec.rb +6 -12
- data/spec/array_spec.rb +28 -54
- data/spec/attrasgn_spec.rb +60 -85
- data/spec/back_ref_spec.rb +6 -8
- data/spec/call_spec.rb +137 -225
- data/spec/case_spec.rb +94 -112
- data/spec/cdecl_spec.rb +16 -28
- data/spec/class_spec.rb +28 -40
- data/spec/colon2_spec.rb +2 -4
- data/spec/colon3_spec.rb +2 -4
- data/spec/const_spec.rb +2 -4
- data/spec/custom/runner/relates.rb +4 -0
- data/spec/cvar_spec.rb +6 -12
- data/spec/cvasgn_spec.rb +20 -15
- data/spec/defined_spec.rb +57 -55
- data/spec/defn_spec.rb +218 -280
- data/spec/defs_spec.rb +30 -38
- data/spec/dot2_spec.rb +2 -4
- data/spec/dot3_spec.rb +2 -4
- data/spec/dregx_spec.rb +20 -34
- data/spec/dstr_spec.rb +87 -111
- data/spec/dsym_spec.rb +5 -7
- data/spec/dxstr_spec.rb +2 -4
- data/spec/ensure_spec.rb +32 -40
- data/spec/false_spec.rb +2 -4
- data/spec/flip2_spec.rb +22 -26
- data/spec/flip3_spec.rb +15 -17
- data/spec/for_spec.rb +25 -23
- data/spec/gasgn_spec.rb +4 -8
- data/spec/gvar_spec.rb +8 -16
- data/spec/hash_spec.rb +14 -18
- data/spec/iasgn_spec.rb +8 -14
- data/spec/if_spec.rb +50 -80
- data/spec/iter_spec.rb +328 -402
- data/spec/lasgn_spec.rb +143 -200
- data/spec/lit_spec.rb +20 -40
- data/spec/masgn_spec.rb +278 -309
- data/spec/match2_spec.rb +6 -10
- data/spec/match3_spec.rb +9 -13
- data/spec/match_spec.rb +2 -4
- data/spec/module_spec.rb +12 -16
- data/spec/nil_spec.rb +2 -4
- data/spec/not_spec.rb +6 -8
- data/spec/nth_ref_spec.rb +2 -4
- data/spec/op_asgn_spec.rb +118 -158
- data/spec/or_spec.rb +18 -24
- data/spec/postexe_spec.rb +2 -4
- data/spec/regex_spec.rb +11 -19
- data/spec/rescue_spec.rb +135 -143
- data/spec/return_spec.rb +19 -36
- data/spec/sclass_spec.rb +26 -25
- data/spec/spec_helper.rb +9 -0
- data/spec/str_spec.rb +25 -43
- data/spec/super_spec.rb +31 -49
- data/spec/true_spec.rb +2 -4
- data/spec/undef_spec.rb +38 -53
- data/spec/until_spec.rb +13 -105
- data/spec/valias_spec.rb +2 -4
- data/spec/while_spec.rb +35 -117
- data/spec/xstr_spec.rb +2 -4
- data/spec/yield_spec.rb +22 -42
- data/spec/zsuper_spec.rb +8 -16
- metadata +64 -22
- data/spec/cvdecl_spec.rb +0 -12
data/spec/back_ref_spec.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
describe "An Back_ref node" do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
[:back_ref, :+]]
|
9
|
-
end
|
2
|
+
parse "[$&, $`, $', $+]" do
|
3
|
+
[:array,
|
4
|
+
[:back_ref, :&],
|
5
|
+
[:back_ref, :`],
|
6
|
+
[:back_ref, :"'"],
|
7
|
+
[:back_ref, :+]]
|
10
8
|
end
|
11
9
|
end
|
data/spec/call_spec.rb
CHANGED
@@ -1,268 +1,184 @@
|
|
1
1
|
describe "A Call node" do
|
2
|
-
|
3
|
-
|
4
|
-
[:call, [:self], :method, [:arglist]]
|
5
|
-
end
|
2
|
+
parse "self.method" do
|
3
|
+
[:call, [:self], :method, [:arglist]]
|
6
4
|
end
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
[:call, [:lit, 1], :m, [:arglist, [:lit, 2]]]
|
11
|
-
end
|
6
|
+
parse "1.m(2)" do
|
7
|
+
[:call, [:lit, 1], :m, [:arglist, [:lit, 2]]]
|
12
8
|
end
|
13
9
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
[:
|
18
|
-
|
19
|
-
|
20
|
-
[:splat, [:call, nil, :a, [:arglist]]]]]
|
21
|
-
end
|
10
|
+
parse "h(1, 2, *a)" do
|
11
|
+
[:call, nil, :h,
|
12
|
+
[:arglist,
|
13
|
+
[:lit, 1],
|
14
|
+
[:lit, 2],
|
15
|
+
[:splat, [:call, nil, :a, [:arglist]]]]]
|
22
16
|
end
|
23
17
|
|
24
|
-
|
18
|
+
parse <<-ruby do
|
25
19
|
begin
|
26
20
|
(1 + 1)
|
27
21
|
end
|
28
22
|
ruby
|
29
23
|
|
30
|
-
|
31
|
-
[:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]
|
32
|
-
end
|
24
|
+
[:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]
|
33
25
|
end
|
34
26
|
|
35
|
-
|
36
|
-
|
37
|
-
[:call, nil, :
|
38
|
-
[:arglist, [:splat, [:call, nil, :a, [:arglist]]]]]
|
39
|
-
end
|
27
|
+
parse "blah(*a)" do
|
28
|
+
[:call, nil, :blah,
|
29
|
+
[:arglist, [:splat, [:call, nil, :a, [:arglist]]]]]
|
40
30
|
end
|
41
31
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
[:arglist, [:block_pass, [:call, nil, :c, [:arglist]]]]]
|
48
|
-
end
|
32
|
+
parse "a.b(&c)" do
|
33
|
+
[:call,
|
34
|
+
[:call, nil, :a, [:arglist]],
|
35
|
+
:b,
|
36
|
+
[:arglist, [:block_pass, [:call, nil, :c, [:arglist]]]]]
|
49
37
|
end
|
50
38
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
[:arglist, [:lit, 4], [:block_pass, [:call, nil, :c, [:arglist]]]]]
|
57
|
-
end
|
39
|
+
parse "a.b(4, &c)" do
|
40
|
+
[:call,
|
41
|
+
[:call, nil, :a, [:arglist]],
|
42
|
+
:b,
|
43
|
+
[:arglist, [:lit, 4], [:block_pass, [:call, nil, :c, [:arglist]]]]]
|
58
44
|
end
|
59
45
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
[:block_pass, [:call, nil, :c, [:arglist]]]]]
|
70
|
-
end
|
46
|
+
parse "a.b(1, 2, 3, &c)" do
|
47
|
+
[:call,
|
48
|
+
[:call, nil, :a, [:arglist]],
|
49
|
+
:b,
|
50
|
+
[:arglist,
|
51
|
+
[:lit, 1],
|
52
|
+
[:lit, 2],
|
53
|
+
[:lit, 3],
|
54
|
+
[:block_pass, [:call, nil, :c, [:arglist]]]]]
|
71
55
|
end
|
72
56
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
[:arglist, [:block_pass, [:call, nil, :b, [:arglist]]]]]
|
79
|
-
end
|
57
|
+
parse "a(&b)" do
|
58
|
+
[:call,
|
59
|
+
nil,
|
60
|
+
:a,
|
61
|
+
[:arglist, [:block_pass, [:call, nil, :b, [:arglist]]]]]
|
80
62
|
end
|
81
63
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
[:arglist, [:lit, 4], [:block_pass, [:call, nil, :b, [:arglist]]]]]
|
88
|
-
end
|
64
|
+
parse "a(4, &b)" do
|
65
|
+
[:call,
|
66
|
+
nil,
|
67
|
+
:a,
|
68
|
+
[:arglist, [:lit, 4], [:block_pass, [:call, nil, :b, [:arglist]]]]]
|
89
69
|
end
|
90
70
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
[:block_pass, [:call, nil, :b, [:arglist]]]]]
|
101
|
-
end
|
71
|
+
parse "a(1, 2, 3, &b)" do
|
72
|
+
[:call,
|
73
|
+
nil,
|
74
|
+
:a,
|
75
|
+
[:arglist,
|
76
|
+
[:lit, 1],
|
77
|
+
[:lit, 2],
|
78
|
+
[:lit, 3],
|
79
|
+
[:block_pass, [:call, nil, :b, [:arglist]]]]]
|
102
80
|
end
|
103
81
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
[:nil]]]]]
|
117
|
-
end
|
82
|
+
parse "define_attr_method(:x, :sequence_name, &Proc.new { |*args| nil })" do
|
83
|
+
[:call,
|
84
|
+
nil,
|
85
|
+
:define_attr_method,
|
86
|
+
[:arglist,
|
87
|
+
[:lit, :x],
|
88
|
+
[:lit, :sequence_name],
|
89
|
+
[:block_pass,
|
90
|
+
[:call,
|
91
|
+
[:const, :Proc],
|
92
|
+
:new,
|
93
|
+
[:arglist, [:iter, [:args, :"*args"], [:nil]]]]]]]
|
118
94
|
end
|
119
95
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
[:block_pass, [:call, nil, :block, [:arglist]]]]]
|
128
|
-
end
|
96
|
+
parse "r.read_body(dest, &block)" do
|
97
|
+
[:call,
|
98
|
+
[:call, nil, :r, [:arglist]],
|
99
|
+
:read_body,
|
100
|
+
[:arglist,
|
101
|
+
[:call, nil, :dest, [:arglist]],
|
102
|
+
[:block_pass, [:call, nil, :block, [:arglist]]]]]
|
129
103
|
end
|
130
104
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
[:arglist, [:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
137
|
-
end
|
105
|
+
parse "o.m(:a => 1, :b => 2)" do
|
106
|
+
[:call,
|
107
|
+
[:call, nil, :o, [:arglist]],
|
108
|
+
:m,
|
109
|
+
[:arglist, [:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
138
110
|
end
|
139
111
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
[:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
148
|
-
end
|
112
|
+
parse "o.m(42, :a => 1, :b => 2)" do
|
113
|
+
[:call,
|
114
|
+
[:call, nil, :o, [:arglist]],
|
115
|
+
:m,
|
116
|
+
[:arglist,
|
117
|
+
[:lit, 42],
|
118
|
+
[:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
149
119
|
end
|
150
120
|
|
151
|
-
|
152
|
-
|
153
|
-
[:call,
|
154
|
-
[:call, nil, :o, [:arglist]],
|
155
|
-
:m,
|
156
|
-
[:arglist,
|
157
|
-
[:lit, 42],
|
158
|
-
[:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]],
|
159
|
-
[:splat, [:call, nil, :c, [:arglist]]]]]
|
160
|
-
end
|
121
|
+
parse "o.puts(42)" do
|
122
|
+
[:call, [:call, nil, :o, [:arglist]], :puts, [:arglist, [:lit, 42]]]
|
161
123
|
end
|
162
124
|
|
163
|
-
|
164
|
-
|
165
|
-
[:call, nil, :a, [:arglist, [:lit, 1], [:lit, 2], [:lit, 3]]]
|
166
|
-
end
|
125
|
+
parse "1.b(c)" do
|
126
|
+
[:call, [:lit, 1], :b, [:arglist, [:call, nil, :c, [:arglist]]]]
|
167
127
|
end
|
168
128
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
129
|
+
parse "(v = (1 + 1)).zero?" do
|
130
|
+
[:call,
|
131
|
+
[:lasgn, :v, [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]],
|
132
|
+
:zero?,
|
133
|
+
[:arglist]]
|
173
134
|
end
|
174
135
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
136
|
+
parse "-2**31" do
|
137
|
+
[:call,
|
138
|
+
[:call, [:lit, 2], :**, [:arglist, [:lit, 31]]],
|
139
|
+
:-@,
|
140
|
+
[:arglist]]
|
179
141
|
end
|
180
142
|
|
181
|
-
|
182
|
-
|
183
|
-
[:call,
|
184
|
-
[:lasgn, :v, [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]],
|
185
|
-
:zero?,
|
186
|
-
[:arglist]]
|
187
|
-
end
|
143
|
+
parse "a[]" do
|
144
|
+
[:call, [:call, nil, :a, [:arglist]], :[], [:arglist]]
|
188
145
|
end
|
189
146
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
[:arglist]]
|
196
|
-
end
|
147
|
+
parse "m(:a => 1, :b => 2)" do
|
148
|
+
[:call,
|
149
|
+
nil,
|
150
|
+
:m,
|
151
|
+
[:arglist, [:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
197
152
|
end
|
198
153
|
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
154
|
+
parse "m(42, :a => 1, :b => 2)" do
|
155
|
+
[:call,
|
156
|
+
nil,
|
157
|
+
:m,
|
158
|
+
[:arglist, [:lit, 42], [:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
203
159
|
end
|
204
160
|
|
205
|
-
|
206
|
-
|
207
|
-
[:call,
|
208
|
-
nil,
|
209
|
-
:m,
|
210
|
-
[:arglist, [:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
211
|
-
end
|
161
|
+
parse "m(42)" do
|
162
|
+
[:call, nil, :m, [:arglist, [:lit, 42]]]
|
212
163
|
end
|
213
164
|
|
214
|
-
|
215
|
-
|
216
|
-
[:call,
|
217
|
-
nil,
|
218
|
-
:m,
|
219
|
-
[:arglist, [:lit, 42], [:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]]]]
|
220
|
-
end
|
165
|
+
parse "a(:b) { :c }" do
|
166
|
+
[:call, nil, :a, [:arglist, [:lit, :b], [:iter, [:args], [:lit, :c]]]]
|
221
167
|
end
|
222
168
|
|
223
|
-
|
224
|
-
|
225
|
-
[:call,
|
226
|
-
nil,
|
227
|
-
:m,
|
228
|
-
[:arglist,
|
229
|
-
[:lit, 42],
|
230
|
-
[:hash, [:lit, :a], [:lit, 1], [:lit, :b], [:lit, 2]],
|
231
|
-
[:splat, [:call, nil, :c, [:arglist]]]]]
|
232
|
-
end
|
169
|
+
parse "a [42]" do
|
170
|
+
[:call, nil, :a, [:arglist, [:array, [:lit, 42]]]]
|
233
171
|
end
|
234
172
|
|
235
|
-
|
236
|
-
|
237
|
-
[:call, nil, :m, [:arglist, [:lit, 42]]]
|
238
|
-
end
|
173
|
+
parse "42 if block_given?" do
|
174
|
+
[:if, [:call, nil, :block_given?, [:arglist]], [:lit, 42], nil]
|
239
175
|
end
|
240
176
|
|
241
|
-
|
242
|
-
|
243
|
-
[:iter, [:call, nil, :a, [:arglist, [:lit, :b]]], nil, [:lit, :c]]
|
244
|
-
end
|
177
|
+
parse "method" do
|
178
|
+
[:call, nil, :method, [:arglist]]
|
245
179
|
end
|
246
180
|
|
247
|
-
|
248
|
-
parse do
|
249
|
-
[:call, nil, :a, [:arglist, [:array, [:lit, 42]]]]
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
relates "42 if block_given?" do
|
254
|
-
parse do
|
255
|
-
[:if, [:call, nil, :block_given?, [:arglist]], [:lit, 42], nil]
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
|
-
relates "method" do
|
260
|
-
parse do
|
261
|
-
[:call, nil, :method, [:arglist]]
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
relates <<-ruby do
|
181
|
+
parse <<-ruby do
|
266
182
|
a << begin
|
267
183
|
b
|
268
184
|
rescue
|
@@ -270,29 +186,25 @@ describe "A Call node" do
|
|
270
186
|
end
|
271
187
|
ruby
|
272
188
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
189
|
+
[:call,
|
190
|
+
[:call, nil, :a, [:arglist]],
|
191
|
+
:<<,
|
192
|
+
[:arglist,
|
193
|
+
[:rescue,
|
194
|
+
[:call, nil, :b, [:arglist]],
|
195
|
+
[:resbody,
|
196
|
+
[:array, [:const, :StandardError]],
|
197
|
+
[:call, nil, :c, [:arglist]]]]]]
|
282
198
|
end
|
283
199
|
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
[:arglist, [:array, [:splat, [:array, [:lit, 1]]]]]]
|
290
|
-
end
|
200
|
+
parse "meth([*[1]])" do
|
201
|
+
[:call,
|
202
|
+
nil,
|
203
|
+
:meth,
|
204
|
+
[:arglist, [:splat, [:array, [:lit, 1]]]]]
|
291
205
|
end
|
292
206
|
|
293
|
-
|
294
|
-
|
295
|
-
[:call, nil, :meth, [:arglist, [:splat, [:array, [:lit, 1]]]]]
|
296
|
-
end
|
207
|
+
parse "meth(*[1])" do
|
208
|
+
[:call, nil, :meth, [:arglist, [:splat, [:array, [:lit, 1]]]]]
|
297
209
|
end
|
298
210
|
end
|