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/colon2_spec.rb
CHANGED
data/spec/colon3_spec.rb
CHANGED
data/spec/const_spec.rb
CHANGED
data/spec/cvar_spec.rb
CHANGED
@@ -1,29 +1,23 @@
|
|
1
1
|
describe "A Cvar node" do
|
2
|
-
|
3
|
-
|
4
|
-
[:cvar, :@@x]
|
5
|
-
end
|
2
|
+
parse "@@x" do
|
3
|
+
[:cvar, :@@x]
|
6
4
|
end
|
7
5
|
|
8
|
-
|
6
|
+
parse <<-ruby do
|
9
7
|
class A
|
10
8
|
@@a
|
11
9
|
end
|
12
10
|
ruby
|
13
11
|
|
14
|
-
|
15
|
-
[:class, :A, nil, [:scope, [:cvar, :@@a]]]
|
16
|
-
end
|
12
|
+
[:class, :A, nil, [:scope, [:block, [:cvar, :@@a]]]]
|
17
13
|
end
|
18
14
|
|
19
|
-
|
15
|
+
parse <<-ruby do
|
20
16
|
module M
|
21
17
|
@@a
|
22
18
|
end
|
23
19
|
ruby
|
24
20
|
|
25
|
-
|
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
|
-
|
2
|
+
parse <<-ruby do
|
3
3
|
def x
|
4
4
|
@@blah = 1
|
5
5
|
end
|
6
6
|
ruby
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
3
|
-
|
4
|
-
[:defined, [:gvar, :$x]]
|
5
|
-
end
|
2
|
+
parse "defined? $x" do
|
3
|
+
[:defined, [:gvar, :$x]]
|
6
4
|
end
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
parse "defined? a" do
|
7
|
+
[:defined, [:call, nil, :a, [:arglist]]]
|
10
8
|
end
|
11
9
|
|
12
|
-
|
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
|
-
|
19
|
-
|
18
|
+
parse "defined? x = 1" do
|
19
|
+
[:defined, [:lasgn, :x, [:lit, 1]]]
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
parse "defined? x += 1" do
|
23
|
+
[:defined, [:lasgn, :x, [:call, [:lvar, :x], :+, [:arglist, [:lit, 1]]]]]
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
26
|
+
parse "defined? x ||= 1" do
|
27
|
+
[:defined, [:op_asgn_or, [:lvar, :x], [:lasgn, :x, [:lit, 1]]]]
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
parse "defined? x &&= 1" do
|
31
|
+
[:defined, [:op_asgn_and, [:lvar, :x], [:lasgn, :x, [:lit, 1]]]]
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
parse "defined? X" do
|
35
|
+
[:defined, [:const, :X]]
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
|
-
|
38
|
+
parse "defined? ::X" do
|
39
|
+
[:defined, [:colon3, :X]]
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
|
-
|
42
|
+
parse "defined? X::Y" do
|
43
|
+
[:defined, [:colon2, [:const, :X], :Y]]
|
44
44
|
end
|
45
45
|
|
46
|
-
|
47
|
-
|
46
|
+
parse "defined? X::Y::Z" do
|
47
|
+
[:defined, [:colon2, [:colon2, [:const, :X], :Y], :Z]]
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
|
50
|
+
parse "defined? self::A" do
|
51
|
+
[:defined, [:colon2, [:self], :A]]
|
52
52
|
end
|
53
53
|
|
54
|
-
|
55
|
-
|
54
|
+
parse "defined? self" do
|
55
|
+
[:defined, [:self]]
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
|
-
|
58
|
+
parse "defined? true" do
|
59
|
+
[:defined, [:true]]
|
60
60
|
end
|
61
61
|
|
62
|
-
|
63
|
-
|
62
|
+
parse "defined? false" do
|
63
|
+
[:defined, [:false]]
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
parse "defined? nil" do
|
67
|
+
[:defined, [:nil]]
|
68
68
|
end
|
69
69
|
|
70
|
-
|
71
|
-
|
70
|
+
parse "defined? @var" do
|
71
|
+
[:defined, [:ivar, :@var]]
|
72
72
|
end
|
73
73
|
|
74
|
-
|
75
|
-
|
74
|
+
parse "defined? @@var" do
|
75
|
+
[:defined, [:cvar, :@@var]]
|
76
76
|
end
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
parse "defined? :a" do
|
79
|
+
[:defined, [:lit, :a]]
|
80
80
|
end
|
81
81
|
|
82
|
-
|
83
|
-
|
82
|
+
parse "defined? 'a'" do
|
83
|
+
[:defined, [:str, "a"]]
|
84
84
|
end
|
85
85
|
|
86
|
-
|
87
|
-
|
86
|
+
parse "defined? 0" do
|
87
|
+
[:defined, [:lit, 0]]
|
88
88
|
end
|
89
89
|
|
90
|
-
|
91
|
-
|
90
|
+
parse "defined? yield" do
|
91
|
+
[:defined, [:yield]]
|
92
92
|
end
|
93
93
|
|
94
|
-
|
95
|
-
|
94
|
+
parse "defined? A.m" do
|
95
|
+
[:defined, [:call, [:const, :A], :m, [:arglist]]]
|
96
96
|
end
|
97
97
|
|
98
|
-
|
99
|
-
|
98
|
+
parse "defined? ::A.m" do
|
99
|
+
[:defined, [:call, [:colon3, :A], :m, [:arglist]]]
|
100
100
|
end
|
101
101
|
|
102
|
-
|
103
|
-
|
102
|
+
parse "defined? A::B.m" do
|
103
|
+
[:defined, [:call, [:colon2, [:const, :A], :B], :m, [:arglist]]]
|
104
104
|
end
|
105
105
|
|
106
|
-
|
107
|
-
|
106
|
+
parse "defined? a.b" do
|
107
|
+
[:defined, [:call, [:call, nil, :a, [:arglist]], :b, [:arglist]]]
|
108
108
|
end
|
109
109
|
|
110
|
-
|
110
|
+
parse <<-ruby do
|
111
111
|
a = 1
|
112
112
|
defined? a.to_s
|
113
113
|
ruby
|
114
114
|
|
115
|
-
|
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
|
-
|
2
|
+
parse <<-ruby do
|
3
3
|
def m
|
4
4
|
begin
|
5
5
|
end
|
6
6
|
end
|
7
7
|
ruby
|
8
8
|
|
9
|
-
|
10
|
-
[:defn, :m, [:args], [:scope, [:block, [:nil]]]]
|
11
|
-
end
|
9
|
+
[:defn, :m, [:args], [:scope, [:block, [:nil]]]]
|
12
10
|
end
|
13
11
|
|
14
|
-
|
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
|
-
|
20
|
+
[:defn,
|
21
|
+
:m,
|
22
|
+
[:args],
|
23
|
+
[:scope, [:block, [:ensure, [:return, [:lit, :a]], [:return, [:lit, :b]]]]]]
|
23
24
|
end
|
24
25
|
|
25
|
-
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
46
|
+
parse <<-ruby do
|
48
47
|
def blah(*args, &block)
|
49
48
|
other(*args, &block)
|
50
49
|
end
|
51
50
|
ruby
|
52
51
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
-
|
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
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
[:call, nil, :
|
90
|
-
|
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
|
-
|
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
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
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
|
-
|
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
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
[:call, nil, :
|
140
|
-
|
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
|
-
|
140
|
+
parse <<-ruby do
|
144
141
|
def f(&block)
|
145
142
|
end
|
146
143
|
ruby
|
147
144
|
|
148
|
-
|
149
|
-
[:defn, :f, [:args, :"&block"], [:scope, [:block, [:nil]]]]
|
150
|
-
end
|
145
|
+
[:defn, :f, [:args, :"&block"], [:scope, [:block, [:nil]]]]
|
151
146
|
end
|
152
147
|
|
153
|
-
|
148
|
+
parse <<-ruby do
|
154
149
|
def f(mand, opt = 42, &block)
|
155
150
|
end
|
156
151
|
ruby
|
157
152
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
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
|
-
|
159
|
+
parse <<-ruby do
|
167
160
|
def f(x, a=x.b)
|
168
161
|
end
|
169
162
|
ruby
|
170
163
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
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
|
-
|
170
|
+
parse <<-ruby do
|
180
171
|
def f(mand, &block)
|
181
172
|
end
|
182
173
|
ruby
|
183
174
|
|
184
|
-
|
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
|
-
|
178
|
+
parse <<-ruby do
|
190
179
|
def f(mand, opt = 42)
|
191
180
|
end
|
192
181
|
ruby
|
193
182
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
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
|
-
|
189
|
+
parse <<-ruby do
|
203
190
|
def f(mand, opt = 42, *rest, &block)
|
204
191
|
end
|
205
192
|
ruby
|
206
193
|
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
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
|
-
|
205
|
+
parse <<-ruby do
|
221
206
|
def x(a, b = 42, *)
|
222
207
|
end
|
223
208
|
ruby
|
224
209
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
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
|
-
|
216
|
+
parse <<-ruby do
|
234
217
|
def f(mand, opt = 42, *rest)
|
235
218
|
end
|
236
219
|
ruby
|
237
220
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
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
|
-
|
227
|
+
parse <<-ruby do
|
247
228
|
def empty
|
248
229
|
end
|
249
230
|
ruby
|
250
231
|
|
251
|
-
|
252
|
-
[:defn, :empty, [:args], [:scope, [:block, [:nil]]]]
|
253
|
-
end
|
232
|
+
[:defn, :empty, [:args], [:scope, [:block, [:nil]]]]
|
254
233
|
end
|
255
234
|
|
256
|
-
|
235
|
+
parse <<-ruby do
|
257
236
|
def f(mand)
|
258
237
|
end
|
259
238
|
ruby
|
260
239
|
|
261
|
-
|
262
|
-
[:defn, :f, [:args, :mand], [:scope, [:block, [:nil]]]]
|
263
|
-
end
|
240
|
+
[:defn, :f, [:args, :mand], [:scope, [:block, [:nil]]]]
|
264
241
|
end
|
265
242
|
|
266
|
-
|
243
|
+
parse <<-ruby do
|
267
244
|
def f(mand, *rest, &block)
|
268
245
|
end
|
269
246
|
ruby
|
270
247
|
|
271
|
-
|
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
|
-
|
251
|
+
parse <<-ruby do
|
277
252
|
def x(a, *args)
|
278
253
|
p(a, args)
|
279
254
|
end
|
280
255
|
ruby
|
281
256
|
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
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
|
-
|
263
|
+
parse <<-ruby do
|
291
264
|
def f(mand, *rest)
|
292
265
|
end
|
293
266
|
ruby
|
294
267
|
|
295
|
-
|
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
|
-
|
271
|
+
parse <<-ruby do
|
301
272
|
def f(opt = 42, &block)
|
302
273
|
end
|
303
274
|
ruby
|
304
275
|
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
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
|
-
|
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
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
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
|
-
[:
|
326
|
-
|
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
|
-
|
302
|
+
parse <<-ruby do
|
338
303
|
def f(opt = 42)
|
339
304
|
end
|
340
305
|
ruby
|
341
306
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
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
|
-
|
313
|
+
parse <<-ruby do
|
351
314
|
def f(opt = 42, *rest, &block)
|
352
315
|
end
|
353
316
|
ruby
|
354
317
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
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
|
-
|
324
|
+
parse <<-ruby do
|
364
325
|
def x(b = 42, *)
|
365
326
|
end
|
366
327
|
ruby
|
367
328
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
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
|
-
|
335
|
+
parse <<-ruby do
|
377
336
|
def f(opt = 42, *rest)
|
378
337
|
end
|
379
338
|
ruby
|
380
339
|
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
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
|
-
|
346
|
+
parse <<-ruby do
|
390
347
|
def |(o)
|
391
348
|
end
|
392
349
|
ruby
|
393
350
|
|
394
|
-
|
395
|
-
[:defn, :|, [:args, :o], [:scope, [:block, [:nil]]]]
|
396
|
-
end
|
351
|
+
[:defn, :|, [:args, :o], [:scope, [:block, [:nil]]]]
|
397
352
|
end
|
398
353
|
|
399
|
-
|
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
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
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
|
-
|
375
|
+
parse <<-ruby do
|
423
376
|
def something?
|
424
377
|
end
|
425
378
|
ruby
|
426
379
|
|
427
|
-
|
428
|
-
[:defn, :something?, [:args], [:scope, [:block, [:nil]]]]
|
429
|
-
end
|
380
|
+
[:defn, :something?, [:args], [:scope, [:block, [:nil]]]]
|
430
381
|
end
|
431
382
|
|
432
|
-
|
383
|
+
parse <<-ruby do
|
433
384
|
def x(*)
|
434
385
|
end
|
435
386
|
ruby
|
436
387
|
|
437
|
-
|
438
|
-
[:defn, :x, [:args, :*], [:scope, [:block, [:nil]]]]
|
439
|
-
end
|
388
|
+
[:defn, :x, [:args, :*], [:scope, [:block, [:nil]]]]
|
440
389
|
end
|
441
390
|
|
442
|
-
|
391
|
+
parse <<-ruby do
|
443
392
|
def f(*rest)
|
444
393
|
end
|
445
394
|
ruby
|
446
395
|
|
447
|
-
|
448
|
-
[:defn, :f, [:args, :"*rest"], [:scope, [:block, [:nil]]]]
|
449
|
-
end
|
396
|
+
[:defn, :f, [:args, :"*rest"], [:scope, [:block, [:nil]]]]
|
450
397
|
end
|
451
398
|
|
452
|
-
|
399
|
+
parse <<-ruby do
|
453
400
|
def x(a, *)
|
454
401
|
p(a)
|
455
402
|
end
|
456
403
|
ruby
|
457
404
|
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
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
|
-
|
411
|
+
parse <<-ruby do
|
467
412
|
def zarray
|
468
413
|
a = []
|
469
414
|
return a
|
470
415
|
end
|
471
416
|
ruby
|
472
417
|
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
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
|
-
|
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
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
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
|
-
[:
|
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
|
-
|
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
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
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
|
-
|
472
|
+
parse <<-ruby do
|
531
473
|
def x(*b)
|
532
474
|
a(*b)
|
533
475
|
end
|
534
476
|
ruby
|
535
477
|
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
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
|
-
|
484
|
+
parse <<-ruby do
|
545
485
|
def meth(b)
|
546
486
|
b
|
547
487
|
end
|
548
488
|
ruby
|
549
489
|
|
550
|
-
|
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
|