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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +2 -9
  4. data/Gemfile +0 -4
  5. data/Rakefile +26 -19
  6. data/ext/rubinius/melbourne/extconf.rb +4 -3
  7. data/ext/rubinius/melbourne/grammar.cpp +2 -2
  8. data/ext/rubinius/melbourne/grammar.y +2 -2
  9. data/ext/rubinius/melbourne/melbourne.cpp +4 -5
  10. data/lib/rubinius/melbourne/version.rb +2 -2
  11. data/lib/rubinius/melbourne.rb +1 -21
  12. data/rubinius-melbourne.gemspec +6 -3
  13. data/spec/alias_spec.rb +13 -18
  14. data/spec/and_spec.rb +6 -12
  15. data/spec/array_spec.rb +28 -54
  16. data/spec/attrasgn_spec.rb +60 -85
  17. data/spec/back_ref_spec.rb +6 -8
  18. data/spec/call_spec.rb +137 -225
  19. data/spec/case_spec.rb +94 -112
  20. data/spec/cdecl_spec.rb +16 -28
  21. data/spec/class_spec.rb +28 -40
  22. data/spec/colon2_spec.rb +2 -4
  23. data/spec/colon3_spec.rb +2 -4
  24. data/spec/const_spec.rb +2 -4
  25. data/spec/custom/runner/relates.rb +4 -0
  26. data/spec/cvar_spec.rb +6 -12
  27. data/spec/cvasgn_spec.rb +20 -15
  28. data/spec/defined_spec.rb +57 -55
  29. data/spec/defn_spec.rb +218 -280
  30. data/spec/defs_spec.rb +30 -38
  31. data/spec/dot2_spec.rb +2 -4
  32. data/spec/dot3_spec.rb +2 -4
  33. data/spec/dregx_spec.rb +20 -34
  34. data/spec/dstr_spec.rb +87 -111
  35. data/spec/dsym_spec.rb +5 -7
  36. data/spec/dxstr_spec.rb +2 -4
  37. data/spec/ensure_spec.rb +32 -40
  38. data/spec/false_spec.rb +2 -4
  39. data/spec/flip2_spec.rb +22 -26
  40. data/spec/flip3_spec.rb +15 -17
  41. data/spec/for_spec.rb +25 -23
  42. data/spec/gasgn_spec.rb +4 -8
  43. data/spec/gvar_spec.rb +8 -16
  44. data/spec/hash_spec.rb +14 -18
  45. data/spec/iasgn_spec.rb +8 -14
  46. data/spec/if_spec.rb +50 -80
  47. data/spec/iter_spec.rb +328 -402
  48. data/spec/lasgn_spec.rb +143 -200
  49. data/spec/lit_spec.rb +20 -40
  50. data/spec/masgn_spec.rb +278 -309
  51. data/spec/match2_spec.rb +6 -10
  52. data/spec/match3_spec.rb +9 -13
  53. data/spec/match_spec.rb +2 -4
  54. data/spec/module_spec.rb +12 -16
  55. data/spec/nil_spec.rb +2 -4
  56. data/spec/not_spec.rb +6 -8
  57. data/spec/nth_ref_spec.rb +2 -4
  58. data/spec/op_asgn_spec.rb +118 -158
  59. data/spec/or_spec.rb +18 -24
  60. data/spec/postexe_spec.rb +2 -4
  61. data/spec/regex_spec.rb +11 -19
  62. data/spec/rescue_spec.rb +135 -143
  63. data/spec/return_spec.rb +19 -36
  64. data/spec/sclass_spec.rb +26 -25
  65. data/spec/spec_helper.rb +9 -0
  66. data/spec/str_spec.rb +25 -43
  67. data/spec/super_spec.rb +31 -49
  68. data/spec/true_spec.rb +2 -4
  69. data/spec/undef_spec.rb +38 -53
  70. data/spec/until_spec.rb +13 -105
  71. data/spec/valias_spec.rb +2 -4
  72. data/spec/while_spec.rb +35 -117
  73. data/spec/xstr_spec.rb +2 -4
  74. data/spec/yield_spec.rb +22 -42
  75. data/spec/zsuper_spec.rb +8 -16
  76. metadata +64 -22
  77. data/spec/cvdecl_spec.rb +0 -12
data/spec/colon2_spec.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  describe "A Colon2 node" do
2
- relates "X::Y" do
3
- parse do
4
- [:colon2, [:const, :X], :Y]
5
- end
2
+ parse "X::Y" do
3
+ [:colon2, [:const, :X], :Y]
6
4
  end
7
5
  end
data/spec/colon3_spec.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  describe "A Colon3 node" do
2
- relates "::X" do
3
- parse do
4
- [:colon3, :X]
5
- end
2
+ parse "::X" do
3
+ [:colon3, :X]
6
4
  end
7
5
  end
data/spec/const_spec.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  describe "A Const node" do
2
- relates "X" do
3
- parse do
4
- [:const, :X]
5
- end
2
+ parse "X" do
3
+ [:const, :X]
6
4
  end
7
5
  end
@@ -80,4 +80,8 @@ class Object
80
80
  def relates(str, &block)
81
81
  SpecDataRelation.new(str).instance_eval(&block)
82
82
  end
83
+
84
+ def parse(str, &block)
85
+ SpecDataRelation.new(str).parse(&block)
86
+ end
83
87
  end
data/spec/cvar_spec.rb CHANGED
@@ -1,29 +1,23 @@
1
1
  describe "A Cvar node" do
2
- relates "@@x" do
3
- parse do
4
- [:cvar, :@@x]
5
- end
2
+ parse "@@x" do
3
+ [:cvar, :@@x]
6
4
  end
7
5
 
8
- relates <<-ruby do
6
+ parse <<-ruby do
9
7
  class A
10
8
  @@a
11
9
  end
12
10
  ruby
13
11
 
14
- parse do
15
- [:class, :A, nil, [:scope, [:cvar, :@@a]]]
16
- end
12
+ [:class, :A, nil, [:scope, [:block, [:cvar, :@@a]]]]
17
13
  end
18
14
 
19
- relates <<-ruby do
15
+ parse <<-ruby do
20
16
  module M
21
17
  @@a
22
18
  end
23
19
  ruby
24
20
 
25
- parse do
26
- [:module, :M, [:scope, [:cvar, :@@a]]]
27
- end
21
+ [:module, :M, [:scope, [:block, [:cvar, :@@a]]]]
28
22
  end
29
23
  end
data/spec/cvasgn_spec.rb CHANGED
@@ -1,30 +1,35 @@
1
1
  describe "A Cvasgn node" do
2
- relates <<-ruby do
2
+ parse <<-ruby do
3
3
  def x
4
4
  @@blah = 1
5
5
  end
6
6
  ruby
7
7
 
8
- parse do
9
- [:defn,
10
- :x,
11
- [:args],
12
- [:scope, [:block, [:cvasgn, :@@blah, [:lit, 1]]]]]
13
- end
8
+ [:defn,
9
+ :x,
10
+ [:args],
11
+ [:scope, [:block, [:cvasgn, :@@blah, [:lit, 1]]]]]
14
12
  end
15
13
 
16
- relates <<-ruby do
14
+ parse <<-ruby do
17
15
  def self.quiet_mode=(boolean)
18
16
  @@quiet_mode = boolean
19
17
  end
20
18
  ruby
21
19
 
22
- parse do
23
- [:defs,
24
- [:self],
25
- :quiet_mode=,
26
- [:args, :boolean],
27
- [:scope, [:block, [:cvasgn, :@@quiet_mode, [:lvar, :boolean]]]]]
28
- end
20
+ [:defs,
21
+ [:self],
22
+ :quiet_mode=,
23
+ [:args, :boolean],
24
+ [:scope, [:block, [:cvasgn, :@@quiet_mode, [:lvar, :boolean]]]]]
25
+ end
26
+
27
+ parse <<-ruby do
28
+ class X
29
+ @@blah = 1
30
+ end
31
+ ruby
32
+
33
+ [:class, :X, nil, [:scope, [:block, [:cvasgn, :@@blah, [:lit, 1]]]]]
29
34
  end
30
35
  end
data/spec/defined_spec.rb CHANGED
@@ -1,117 +1,119 @@
1
1
  describe "A Defined node" do
2
- relates "defined? $x" do
3
- parse do
4
- [:defined, [:gvar, :$x]]
5
- end
2
+ parse "defined? $x" do
3
+ [:defined, [:gvar, :$x]]
6
4
  end
7
5
 
8
- relates "defined? a" do
9
- # TODO
6
+ parse "defined? a" do
7
+ [:defined, [:call, nil, :a, [:arglist]]]
10
8
  end
11
9
 
12
- relates <<-ruby do
10
+ parse <<-ruby do
13
11
  a = 1
14
12
  defined? a
15
13
  ruby
14
+
15
+ [:block, [:lasgn, :a, [:lit, 1]], [:defined, [:lvar, :a]]]
16
16
  end
17
17
 
18
- relates "defined? x = 1" do
19
- # TODO
18
+ parse "defined? x = 1" do
19
+ [:defined, [:lasgn, :x, [:lit, 1]]]
20
20
  end
21
21
 
22
- relates "defined? x += 1" do
23
- # TODO
22
+ parse "defined? x += 1" do
23
+ [:defined, [:lasgn, :x, [:call, [:lvar, :x], :+, [:arglist, [:lit, 1]]]]]
24
24
  end
25
25
 
26
- relates "defined? x ||= 1" do
27
- # TODO
26
+ parse "defined? x ||= 1" do
27
+ [:defined, [:op_asgn_or, [:lvar, :x], [:lasgn, :x, [:lit, 1]]]]
28
28
  end
29
29
 
30
- relates "defined? x &&= 1" do
31
- # TODO
30
+ parse "defined? x &&= 1" do
31
+ [:defined, [:op_asgn_and, [:lvar, :x], [:lasgn, :x, [:lit, 1]]]]
32
32
  end
33
33
 
34
- relates "defined? X" do
35
- # TODO
34
+ parse "defined? X" do
35
+ [:defined, [:const, :X]]
36
36
  end
37
37
 
38
- relates "defined? ::X" do
39
- # TODO
38
+ parse "defined? ::X" do
39
+ [:defined, [:colon3, :X]]
40
40
  end
41
41
 
42
- relates "defined? X::Y" do
43
- # TODO
42
+ parse "defined? X::Y" do
43
+ [:defined, [:colon2, [:const, :X], :Y]]
44
44
  end
45
45
 
46
- relates "defined? X::Y::Z" do
47
- # TODO
46
+ parse "defined? X::Y::Z" do
47
+ [:defined, [:colon2, [:colon2, [:const, :X], :Y], :Z]]
48
48
  end
49
49
 
50
- relates "defined? self::A" do
51
- # TODO
50
+ parse "defined? self::A" do
51
+ [:defined, [:colon2, [:self], :A]]
52
52
  end
53
53
 
54
- relates "defined? self" do
55
- # TODO
54
+ parse "defined? self" do
55
+ [:defined, [:self]]
56
56
  end
57
57
 
58
- relates "defined? true" do
59
- # TODO
58
+ parse "defined? true" do
59
+ [:defined, [:true]]
60
60
  end
61
61
 
62
- relates "defined? false" do
63
- # TODO
62
+ parse "defined? false" do
63
+ [:defined, [:false]]
64
64
  end
65
65
 
66
- relates "defined? nil" do
67
- # TODO
66
+ parse "defined? nil" do
67
+ [:defined, [:nil]]
68
68
  end
69
69
 
70
- relates "defined? @var" do
71
- # TODO
70
+ parse "defined? @var" do
71
+ [:defined, [:ivar, :@var]]
72
72
  end
73
73
 
74
- relates "defined? @@var" do
75
- # TODO
74
+ parse "defined? @@var" do
75
+ [:defined, [:cvar, :@@var]]
76
76
  end
77
77
 
78
- relates "defined? :a" do
79
- # TODO
78
+ parse "defined? :a" do
79
+ [:defined, [:lit, :a]]
80
80
  end
81
81
 
82
- relates "defined? 'a'" do
83
- # TODO
82
+ parse "defined? 'a'" do
83
+ [:defined, [:str, "a"]]
84
84
  end
85
85
 
86
- relates "defined? 0" do
87
- # TODO
86
+ parse "defined? 0" do
87
+ [:defined, [:lit, 0]]
88
88
  end
89
89
 
90
- relates "defined? yield" do
91
- # TODO
90
+ parse "defined? yield" do
91
+ [:defined, [:yield]]
92
92
  end
93
93
 
94
- relates "defined? A.m" do
95
- # TODO
94
+ parse "defined? A.m" do
95
+ [:defined, [:call, [:const, :A], :m, [:arglist]]]
96
96
  end
97
97
 
98
- relates "defined? ::A.m" do
99
- # TODO
98
+ parse "defined? ::A.m" do
99
+ [:defined, [:call, [:colon3, :A], :m, [:arglist]]]
100
100
  end
101
101
 
102
- relates "defined? A::B.m" do
103
- # TODO
102
+ parse "defined? A::B.m" do
103
+ [:defined, [:call, [:colon2, [:const, :A], :B], :m, [:arglist]]]
104
104
  end
105
105
 
106
- relates "defined? a.b" do
107
- # TODO
106
+ parse "defined? a.b" do
107
+ [:defined, [:call, [:call, nil, :a, [:arglist]], :b, [:arglist]]]
108
108
  end
109
109
 
110
- relates <<-ruby do
110
+ parse <<-ruby do
111
111
  a = 1
112
112
  defined? a.to_s
113
113
  ruby
114
114
 
115
- # TODO
115
+ [:block,
116
+ [:lasgn, :a, [:lit, 1]],
117
+ [:defined, [:call, [:lvar, :a], :to_s, [:arglist]]]]
116
118
  end
117
119
  end
data/spec/defn_spec.rb CHANGED
@@ -1,17 +1,15 @@
1
1
  describe "A Defn node" do
2
- relates <<-ruby do
2
+ parse <<-ruby do
3
3
  def m
4
4
  begin
5
5
  end
6
6
  end
7
7
  ruby
8
8
 
9
- parse do
10
- [:defn, :m, [:args], [:scope, [:block, [:nil]]]]
11
- end
9
+ [:defn, :m, [:args], [:scope, [:block, [:nil]]]]
12
10
  end
13
11
 
14
- relates <<-ruby do
12
+ parse <<-ruby do
15
13
  def m
16
14
  return :a
17
15
  ensure
@@ -19,53 +17,52 @@ describe "A Defn node" do
19
17
  end
20
18
  ruby
21
19
 
22
- # TODO
20
+ [:defn,
21
+ :m,
22
+ [:args],
23
+ [:scope, [:block, [:ensure, [:return, [:lit, :a]], [:return, [:lit, :b]]]]]]
23
24
  end
24
25
 
25
- relates <<-ruby do
26
+ parse <<-ruby do
26
27
  def blah(*args, &block)
27
28
  other(42, *args, &block)
28
29
  end
29
30
  ruby
30
31
 
31
- parse do
32
- [:defn,
33
- :blah,
34
- [:args, :"*args", :"&block"],
35
- [:scope,
36
- [:block,
37
- [:call,
38
- nil,
39
- :other,
40
- [:arglist,
41
- [:lit, 42],
42
- [:splat, [:lvar, :args]],
43
- [:block_pass, [:lvar, :block]]]]]]]
44
- end
32
+ [:defn,
33
+ :blah,
34
+ [:args, :"*args", :"&block"],
35
+ [:scope,
36
+ [:block,
37
+ [:call,
38
+ nil,
39
+ :other,
40
+ [:arglist,
41
+ [:lit, 42],
42
+ [:splat, [:lvar, :args]],
43
+ [:block_pass, [:lvar, :block]]]]]]]
45
44
  end
46
45
 
47
- relates <<-ruby do
46
+ parse <<-ruby do
48
47
  def blah(*args, &block)
49
48
  other(*args, &block)
50
49
  end
51
50
  ruby
52
51
 
53
- parse do
54
- [:defn,
55
- :blah,
56
- [:args, :"*args", :"&block"],
57
- [:scope,
58
- [:block,
59
- [:call,
60
- nil,
61
- :other,
62
- [:arglist,
63
- [:splat, [:lvar, :args]],
64
- [:block_pass, [:lvar, :block]]]]]]]
65
- end
52
+ [:defn,
53
+ :blah,
54
+ [:args, :"*args", :"&block"],
55
+ [:scope,
56
+ [:block,
57
+ [:call,
58
+ nil,
59
+ :other,
60
+ [:arglist,
61
+ [:splat, [:lvar, :args]],
62
+ [:block_pass, [:lvar, :block]]]]]]]
66
63
  end
67
64
 
68
- relates <<-ruby do
65
+ parse <<-ruby do
69
66
  def f
70
67
  begin
71
68
  b
@@ -77,20 +74,20 @@ describe "A Defn node" do
77
74
  end
78
75
  ruby
79
76
 
80
- parse do
81
- [:defn,
82
- :f,
83
- [:args],
84
- [:scope,
85
- [:block,
86
- [:rescue,
87
- [:call, nil, :b, [:arglist]],
88
- [:resbody, [:array], [:call, nil, :c, [:arglist]]]],
89
- [:call, nil, :d, [:arglist]]]]]
90
- end
77
+ [:defn,
78
+ :f,
79
+ [:args],
80
+ [:scope,
81
+ [:block,
82
+ [:rescue,
83
+ [:call, nil, :b, [:arglist]],
84
+ [:resbody,
85
+ [:array, [:const, :StandardError]],
86
+ [:call, nil, :c, [:arglist]]]],
87
+ [:call, nil, :d, [:arglist]]]]]
91
88
  end
92
89
 
93
- relates <<-ruby do
90
+ parse <<-ruby do
94
91
  def f
95
92
  a
96
93
  begin
@@ -101,20 +98,20 @@ describe "A Defn node" do
101
98
  end
102
99
  ruby
103
100
 
104
- parse do
105
- [:defn,
106
- :f,
107
- [:args],
108
- [:scope,
109
- [:block,
110
- [:call, nil, :a, [:arglist]],
111
- [:rescue,
112
- [:call, nil, :b, [:arglist]],
113
- [:resbody, [:array], [:call, nil, :c, [:arglist]]]]]]]
114
- end
101
+ [:defn,
102
+ :f,
103
+ [:args],
104
+ [:scope,
105
+ [:block,
106
+ [:call, nil, :a, [:arglist]],
107
+ [:rescue,
108
+ [:call, nil, :b, [:arglist]],
109
+ [:resbody,
110
+ [:array, [:const, :StandardError]],
111
+ [:call, nil, :c, [:arglist]]]]]]]
115
112
  end
116
113
 
117
- relates <<-ruby do
114
+ parse <<-ruby do
118
115
  def f
119
116
  a
120
117
  begin
@@ -126,277 +123,235 @@ describe "A Defn node" do
126
123
  end
127
124
  ruby
128
125
 
129
- parse do
130
- [:defn,
131
- :f,
132
- [:args],
133
- [:scope,
134
- [:block,
135
- [:call, nil, :a, [:arglist]],
136
- [:rescue,
137
- [:call, nil, :b, [:arglist]],
138
- [:resbody, [:array], [:call, nil, :c, [:arglist]]]],
139
- [:call, nil, :d, [:arglist]]]]]
140
- end
126
+ [:defn,
127
+ :f,
128
+ [:args],
129
+ [:scope,
130
+ [:block,
131
+ [:call, nil, :a, [:arglist]],
132
+ [:rescue,
133
+ [:call, nil, :b, [:arglist]],
134
+ [:resbody,
135
+ [:array, [:const, :StandardError]],
136
+ [:call, nil, :c, [:arglist]]]],
137
+ [:call, nil, :d, [:arglist]]]]]
141
138
  end
142
139
 
143
- relates <<-ruby do
140
+ parse <<-ruby do
144
141
  def f(&block)
145
142
  end
146
143
  ruby
147
144
 
148
- parse do
149
- [:defn, :f, [:args, :"&block"], [:scope, [:block, [:nil]]]]
150
- end
145
+ [:defn, :f, [:args, :"&block"], [:scope, [:block, [:nil]]]]
151
146
  end
152
147
 
153
- relates <<-ruby do
148
+ parse <<-ruby do
154
149
  def f(mand, opt = 42, &block)
155
150
  end
156
151
  ruby
157
152
 
158
- parse do
159
- [:defn,
160
- :f,
161
- [:args, :mand, :opt, :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
162
- [:scope, [:block, [:nil]]]]
163
- end
153
+ [:defn,
154
+ :f,
155
+ [:args, :mand, :opt, :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
156
+ [:scope, [:block, [:nil]]]]
164
157
  end
165
158
 
166
- relates <<-ruby do
159
+ parse <<-ruby do
167
160
  def f(x, a=x.b)
168
161
  end
169
162
  ruby
170
163
 
171
- parse do
172
- [:defn,
173
- :f,
174
- [:args, :x, :a, [:block, [:lasgn, :a, [:call, [:lvar, :x], :b, [:arglist]]]]],
175
- [:scope, [:block, [:nil]]]]
176
- end
164
+ [:defn,
165
+ :f,
166
+ [:args, :x, :a, [:block, [:lasgn, :a, [:call, [:lvar, :x], :b, [:arglist]]]]],
167
+ [:scope, [:block, [:nil]]]]
177
168
  end
178
169
 
179
- relates <<-ruby do
170
+ parse <<-ruby do
180
171
  def f(mand, &block)
181
172
  end
182
173
  ruby
183
174
 
184
- parse do
185
- [:defn, :f, [:args, :mand, :"&block"], [:scope, [:block, [:nil]]]]
186
- end
175
+ [:defn, :f, [:args, :mand, :"&block"], [:scope, [:block, [:nil]]]]
187
176
  end
188
177
 
189
- relates <<-ruby do
178
+ parse <<-ruby do
190
179
  def f(mand, opt = 42)
191
180
  end
192
181
  ruby
193
182
 
194
- parse do
195
- [:defn,
196
- :f,
197
- [:args, :mand, :opt, [:block, [:lasgn, :opt, [:lit, 42]]]],
198
- [:scope, [:block, [:nil]]]]
199
- end
183
+ [:defn,
184
+ :f,
185
+ [:args, :mand, :opt, [:block, [:lasgn, :opt, [:lit, 42]]]],
186
+ [:scope, [:block, [:nil]]]]
200
187
  end
201
188
 
202
- relates <<-ruby do
189
+ parse <<-ruby do
203
190
  def f(mand, opt = 42, *rest, &block)
204
191
  end
205
192
  ruby
206
193
 
207
- parse do
208
- [:defn,
209
- :f,
210
- [:args,
211
- :mand,
212
- :opt,
213
- :"*rest",
214
- :"&block",
215
- [:block, [:lasgn, :opt, [:lit, 42]]]],
216
- [:scope, [:block, [:nil]]]]
217
- end
194
+ [:defn,
195
+ :f,
196
+ [:args,
197
+ :mand,
198
+ :opt,
199
+ :"*rest",
200
+ :"&block",
201
+ [:block, [:lasgn, :opt, [:lit, 42]]]],
202
+ [:scope, [:block, [:nil]]]]
218
203
  end
219
204
 
220
- relates <<-ruby do
205
+ parse <<-ruby do
221
206
  def x(a, b = 42, *)
222
207
  end
223
208
  ruby
224
209
 
225
- parse do
226
- [:defn,
227
- :x,
228
- [:args, :a, :b, :*, [:block, [:lasgn, :b, [:lit, 42]]]],
229
- [:scope, [:block, [:nil]]]]
230
- end
210
+ [:defn,
211
+ :x,
212
+ [:args, :a, :b, :*, [:block, [:lasgn, :b, [:lit, 42]]]],
213
+ [:scope, [:block, [:nil]]]]
231
214
  end
232
215
 
233
- relates <<-ruby do
216
+ parse <<-ruby do
234
217
  def f(mand, opt = 42, *rest)
235
218
  end
236
219
  ruby
237
220
 
238
- parse do
239
- [:defn,
240
- :f,
241
- [:args, :mand, :opt, :"*rest", [:block, [:lasgn, :opt, [:lit, 42]]]],
242
- [:scope, [:block, [:nil]]]]
243
- end
221
+ [:defn,
222
+ :f,
223
+ [:args, :mand, :opt, :"*rest", [:block, [:lasgn, :opt, [:lit, 42]]]],
224
+ [:scope, [:block, [:nil]]]]
244
225
  end
245
226
 
246
- relates <<-ruby do
227
+ parse <<-ruby do
247
228
  def empty
248
229
  end
249
230
  ruby
250
231
 
251
- parse do
252
- [:defn, :empty, [:args], [:scope, [:block, [:nil]]]]
253
- end
232
+ [:defn, :empty, [:args], [:scope, [:block, [:nil]]]]
254
233
  end
255
234
 
256
- relates <<-ruby do
235
+ parse <<-ruby do
257
236
  def f(mand)
258
237
  end
259
238
  ruby
260
239
 
261
- parse do
262
- [:defn, :f, [:args, :mand], [:scope, [:block, [:nil]]]]
263
- end
240
+ [:defn, :f, [:args, :mand], [:scope, [:block, [:nil]]]]
264
241
  end
265
242
 
266
- relates <<-ruby do
243
+ parse <<-ruby do
267
244
  def f(mand, *rest, &block)
268
245
  end
269
246
  ruby
270
247
 
271
- parse do
272
- [:defn, :f, [:args, :mand, :"*rest", :"&block"], [:scope, [:block, [:nil]]]]
273
- end
248
+ [:defn, :f, [:args, :mand, :"*rest", :"&block"], [:scope, [:block, [:nil]]]]
274
249
  end
275
250
 
276
- relates <<-ruby do
251
+ parse <<-ruby do
277
252
  def x(a, *args)
278
253
  p(a, args)
279
254
  end
280
255
  ruby
281
256
 
282
- parse do
283
- [:defn,
284
- :x,
285
- [:args, :a, :"*args"],
286
- [:scope, [:block, [:call, nil, :p, [:arglist, [:lvar, :a], [:lvar, :args]]]]]]
287
- end
257
+ [:defn,
258
+ :x,
259
+ [:args, :a, :"*args"],
260
+ [:scope, [:block, [:call, nil, :p, [:arglist, [:lvar, :a], [:lvar, :args]]]]]]
288
261
  end
289
262
 
290
- relates <<-ruby do
263
+ parse <<-ruby do
291
264
  def f(mand, *rest)
292
265
  end
293
266
  ruby
294
267
 
295
- parse do
296
- [:defn, :f, [:args, :mand, :"*rest"], [:scope, [:block, [:nil]]]]
297
- end
268
+ [:defn, :f, [:args, :mand, :"*rest"], [:scope, [:block, [:nil]]]]
298
269
  end
299
270
 
300
- relates <<-ruby do
271
+ parse <<-ruby do
301
272
  def f(opt = 42, &block)
302
273
  end
303
274
  ruby
304
275
 
305
- parse do
306
- [:defn,
307
- :f,
308
- [:args, :opt, :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
309
- [:scope, [:block, [:nil]]]]
310
- end
276
+ [:defn,
277
+ :f,
278
+ [:args, :opt, :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
279
+ [:scope, [:block, [:nil]]]]
311
280
  end
312
281
 
313
- relates <<-ruby do
282
+ parse <<-ruby do
314
283
  def f(a = 42, b = '1', c=lambda {|n| n })
315
284
  end
316
285
  ruby
317
286
 
318
- parse do
319
- [:defn,
320
- :f,
321
- [:args,
322
- :a,
323
- :b,
287
+ [:defn,
288
+ :f,
289
+ [:args,
290
+ :a,
291
+ :b,
292
+ :c,
293
+ [:block,
294
+ [:lasgn, :a, [:lit, 42]],
295
+ [:lasgn, :b, [:str, "1"]],
296
+ [:lasgn,
324
297
  :c,
325
- [:block,
326
- [:lasgn, :a, [:lit, 42]],
327
- [:lasgn, :b, [:str, "1"]],
328
- [:lasgn,
329
- :c,
330
- [:iter, [:call, nil, :lambda, [:arglist]], [:lasgn, :n], [:lvar, :n]]]]],
331
- [:scope, [:block, [:nil]]]]
332
- end
333
-
334
- # defn args opt lambda
298
+ [:call, nil, :lambda, [:arglist, [:iter, [:args, :n], [:lvar, :n]]]]]]],
299
+ [:scope, [:block, [:nil]]]]
335
300
  end
336
301
 
337
- relates <<-ruby do
302
+ parse <<-ruby do
338
303
  def f(opt = 42)
339
304
  end
340
305
  ruby
341
306
 
342
- parse do
343
- [:defn,
344
- :f,
345
- [:args, :opt, [:block, [:lasgn, :opt, [:lit, 42]]]],
346
- [:scope, [:block, [:nil]]]]
347
- end
307
+ [:defn,
308
+ :f,
309
+ [:args, :opt, [:block, [:lasgn, :opt, [:lit, 42]]]],
310
+ [:scope, [:block, [:nil]]]]
348
311
  end
349
312
 
350
- relates <<-ruby do
313
+ parse <<-ruby do
351
314
  def f(opt = 42, *rest, &block)
352
315
  end
353
316
  ruby
354
317
 
355
- parse do
356
- [:defn,
357
- :f,
358
- [:args, :opt, :"*rest", :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
359
- [:scope, [:block, [:nil]]]]
360
- end
318
+ [:defn,
319
+ :f,
320
+ [:args, :opt, :"*rest", :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
321
+ [:scope, [:block, [:nil]]]]
361
322
  end
362
323
 
363
- relates <<-ruby do
324
+ parse <<-ruby do
364
325
  def x(b = 42, *)
365
326
  end
366
327
  ruby
367
328
 
368
- parse do
369
- [:defn,
370
- :x,
371
- [:args, :b, :*, [:block, [:lasgn, :b, [:lit, 42]]]],
372
- [:scope, [:block, [:nil]]]]
373
- end
329
+ [:defn,
330
+ :x,
331
+ [:args, :b, :*, [:block, [:lasgn, :b, [:lit, 42]]]],
332
+ [:scope, [:block, [:nil]]]]
374
333
  end
375
334
 
376
- relates <<-ruby do
335
+ parse <<-ruby do
377
336
  def f(opt = 42, *rest)
378
337
  end
379
338
  ruby
380
339
 
381
- parse do
382
- [:defn,
383
- :f,
384
- [:args, :opt, :"*rest", [:block, [:lasgn, :opt, [:lit, 42]]]],
385
- [:scope, [:block, [:nil]]]]
386
- end
340
+ [:defn,
341
+ :f,
342
+ [:args, :opt, :"*rest", [:block, [:lasgn, :opt, [:lit, 42]]]],
343
+ [:scope, [:block, [:nil]]]]
387
344
  end
388
345
 
389
- relates <<-ruby do
346
+ parse <<-ruby do
390
347
  def |(o)
391
348
  end
392
349
  ruby
393
350
 
394
- parse do
395
- [:defn, :|, [:args, :o], [:scope, [:block, [:nil]]]]
396
- end
351
+ [:defn, :|, [:args, :o], [:scope, [:block, [:nil]]]]
397
352
  end
398
353
 
399
- relates <<-ruby do
354
+ parse <<-ruby do
400
355
  def eql?(resource)
401
356
  (self.uuid == resource.uuid)
402
357
  rescue
@@ -404,81 +359,69 @@ describe "A Defn node" do
404
359
  end
405
360
  ruby
406
361
 
407
- parse do
408
- [:defn,
409
- :eql?,
410
- [:args, :resource],
411
- [:scope,
412
- [:block,
413
- [:rescue,
414
- [:call,
415
- [:call, [:self], :uuid, [:arglist]],
416
- :==,
417
- [:arglist, [:call, [:lvar, :resource], :uuid, [:arglist]]]],
418
- [:resbody, [:array], [:false]]]]]]
419
- end
362
+ [:defn,
363
+ :eql?,
364
+ [:args, :resource],
365
+ [:scope,
366
+ [:block,
367
+ [:rescue,
368
+ [:call,
369
+ [:call, [:self], :uuid, [:arglist]],
370
+ :==,
371
+ [:arglist, [:call, [:lvar, :resource], :uuid, [:arglist]]]],
372
+ [:resbody, [:array, [:const, :StandardError]], [:false]]]]]]
420
373
  end
421
374
 
422
- relates <<-ruby do
375
+ parse <<-ruby do
423
376
  def something?
424
377
  end
425
378
  ruby
426
379
 
427
- parse do
428
- [:defn, :something?, [:args], [:scope, [:block, [:nil]]]]
429
- end
380
+ [:defn, :something?, [:args], [:scope, [:block, [:nil]]]]
430
381
  end
431
382
 
432
- relates <<-ruby do
383
+ parse <<-ruby do
433
384
  def x(*)
434
385
  end
435
386
  ruby
436
387
 
437
- parse do
438
- [:defn, :x, [:args, :*], [:scope, [:block, [:nil]]]]
439
- end
388
+ [:defn, :x, [:args, :*], [:scope, [:block, [:nil]]]]
440
389
  end
441
390
 
442
- relates <<-ruby do
391
+ parse <<-ruby do
443
392
  def f(*rest)
444
393
  end
445
394
  ruby
446
395
 
447
- parse do
448
- [:defn, :f, [:args, :"*rest"], [:scope, [:block, [:nil]]]]
449
- end
396
+ [:defn, :f, [:args, :"*rest"], [:scope, [:block, [:nil]]]]
450
397
  end
451
398
 
452
- relates <<-ruby do
399
+ parse <<-ruby do
453
400
  def x(a, *)
454
401
  p(a)
455
402
  end
456
403
  ruby
457
404
 
458
- parse do
459
- [:defn,
460
- :x,
461
- [:args, :a, :*],
462
- [:scope, [:block, [:call, nil, :p, [:arglist, [:lvar, :a]]]]]]
463
- end
405
+ [:defn,
406
+ :x,
407
+ [:args, :a, :*],
408
+ [:scope, [:block, [:call, nil, :p, [:arglist, [:lvar, :a]]]]]]
464
409
  end
465
410
 
466
- relates <<-ruby do
411
+ parse <<-ruby do
467
412
  def zarray
468
413
  a = []
469
414
  return a
470
415
  end
471
416
  ruby
472
417
 
473
- parse do
474
- [:defn,
475
- :zarray,
476
- [:args],
477
- [:scope, [:block, [:lasgn, :a, [:array]], [:return, [:lvar, :a]]]]]
478
- end
418
+ [:defn,
419
+ :zarray,
420
+ [:args],
421
+ [:scope, [:block, [:lasgn, :a, [:array]], [:return, [:lvar, :a]]]]]
479
422
  end
480
423
 
481
- relates <<-ruby do
424
+ parse <<-ruby do
482
425
  b = 42
483
426
  def a
484
427
  c do
@@ -491,64 +434,59 @@ describe "A Defn node" do
491
434
  end
492
435
  ruby
493
436
 
494
- parse do
495
- [:block,
496
- [:lasgn, :b, [:lit, 42]],
497
- [:defn,
498
- :a,
499
- [:args],
500
- [:scope,
501
- [:block,
437
+ [:block,
438
+ [:lasgn, :b, [:lit, 42]],
439
+ [:defn,
440
+ :a,
441
+ [:args],
442
+ [:scope,
443
+ [:block,
444
+ [:call,
445
+ nil,
446
+ :c,
447
+ [:arglist,
502
448
  [:iter,
503
- [:call, nil, :c, [:arglist]],
504
- nil,
449
+ [:args],
505
450
  [:rescue,
506
451
  [:call, nil, :do_stuff, [:arglist]],
507
452
  [:resbody,
508
453
  [:array, [:const, :RuntimeError], [:lasgn, :b, [:gvar, :$!]]],
509
- [:call, nil, :puts, [:arglist, [:lvar, :b]]]]]]]]]]
510
- end
454
+ [:call, nil, :puts, [:arglist, [:lvar, :b]]]]]]]]]]]]
511
455
  end
512
456
 
513
- relates <<-ruby do
457
+ parse <<-ruby do
514
458
  def x(a=0.0,b=0.0)
515
459
  a+b
516
460
  end
517
461
  ruby
518
462
 
519
- parse do
520
- [:defn,
521
- :x,
522
- [:args,
523
- :a,
524
- :b,
525
- [:block, [:lasgn, :a, [:lit, 0.0]], [:lasgn, :b, [:lit, 0.0]]]],
526
- [:scope, [:block, [:call, [:lvar, :a], :+, [:arglist, [:lvar, :b]]]]]]
527
- end
463
+ [:defn,
464
+ :x,
465
+ [:args,
466
+ :a,
467
+ :b,
468
+ [:block, [:lasgn, :a, [:lit, 0.0]], [:lasgn, :b, [:lit, 0.0]]]],
469
+ [:scope, [:block, [:call, [:lvar, :a], :+, [:arglist, [:lvar, :b]]]]]]
528
470
  end
529
471
 
530
- relates <<-ruby do
472
+ parse <<-ruby do
531
473
  def x(*b)
532
474
  a(*b)
533
475
  end
534
476
  ruby
535
477
 
536
- parse do
537
- [:defn,
538
- :x,
539
- [:args, :"*b"],
540
- [:scope, [:block, [:call, nil, :a, [:arglist, [:splat, [:lvar, :b]]]]]]]
541
- end
478
+ [:defn,
479
+ :x,
480
+ [:args, :"*b"],
481
+ [:scope, [:block, [:call, nil, :a, [:arglist, [:splat, [:lvar, :b]]]]]]]
542
482
  end
543
483
 
544
- relates <<-ruby do
484
+ parse <<-ruby do
545
485
  def meth(b)
546
486
  b
547
487
  end
548
488
  ruby
549
489
 
550
- parse do
551
- [:defn, :meth, [:args, :b], [:scope, [:block, [:lvar, :b]]]]
552
- end
490
+ [:defn, :meth, [:args, :b], [:scope, [:block, [:lvar, :b]]]]
553
491
  end
554
492
  end