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/until_spec.rb CHANGED
@@ -6,135 +6,43 @@ describe "An Until node" do
6
6
  true
7
7
  ]
8
8
 
9
- relates <<-ruby do
10
- while not a
11
- b + 1
12
- end
13
- ruby
14
-
15
- parse do
16
- pre_until_sexp
17
- end
18
- end
19
-
20
- relates "b + 1 while not a" do
21
- parse do
22
- pre_until_sexp
23
- end
24
- end
25
-
26
- relates <<-ruby do
9
+ parse <<-ruby do
27
10
  until a
28
11
  b + 1
29
12
  end
30
13
  ruby
31
14
 
32
- parse do
33
- pre_until_sexp
34
- end
35
- end
36
-
37
- relates "b + 1 until a" do
38
- parse do
39
- pre_until_sexp
40
- end
41
- end
42
-
43
- post_until_sexp = [
44
- :until,
45
- [:call, nil, :a, [:arglist]],
46
- [:call, [:call, nil, :b, [:arglist]], :+, [:arglist, [:lit, 1]]],
47
- false
48
- ]
49
-
50
- post_until = lambda do |g|
51
- top = g.new_label
52
- rdo = g.new_label
53
- brk = g.new_label
54
- bottom = g.new_label
55
-
56
- g.push_modifiers
57
-
58
- top.set!
59
-
60
- g.push :self
61
- g.send :b, 0, true
62
- g.push 1
63
- g.send :+, 1, false
64
- g.pop
65
-
66
- rdo.set!
67
-
68
- g.push :self
69
- g.send :a, 0, true
70
- g.git bottom
71
-
72
- g.check_interrupts
73
- g.goto top
74
-
75
- bottom.set!
76
- g.push :nil
77
-
78
- brk.set!
79
-
80
- g.pop_modifiers
15
+ pre_until_sexp
81
16
  end
82
17
 
83
- relates <<-ruby do
84
- begin
85
- b + 1
86
- end while not a
87
- ruby
88
-
89
- parse do
90
- post_until_sexp
91
- end
18
+ parse "b + 1 until a" do
19
+ pre_until_sexp
92
20
  end
93
21
 
94
- relates <<-ruby do
22
+ parse <<-ruby do
95
23
  begin
96
24
  b + 1
97
25
  end until a
98
26
  ruby
99
27
 
100
- parse do
101
- post_until_sexp
102
- end
28
+ [:until,
29
+ [:call, nil, :a, [:arglist]],
30
+ [:call, [:call, nil, :b, [:arglist]], :+, [:arglist, [:lit, 1]]],
31
+ false]
103
32
  end
104
33
 
105
34
  nil_condition_sexp = [:until, [:nil], [:call, nil, :a, [:arglist]], true]
106
35
 
107
- relates "a until ()" do
108
- parse do
109
- nil_condition_sexp
110
- end
36
+ parse "a until ()" do
37
+ nil_condition_sexp
111
38
  end
112
39
 
113
- relates <<-ruby do
40
+ parse <<-ruby do
114
41
  until ()
115
42
  a
116
43
  end
117
44
  ruby
118
45
 
119
- parse do
120
- nil_condition_sexp
121
- end
122
- end
123
-
124
- relates "a while not ()" do
125
- parse do
126
- nil_condition_sexp
127
- end
128
- end
129
-
130
- relates <<-ruby do
131
- while not ()
132
- a
133
- end
134
- ruby
135
-
136
- parse do
137
- nil_condition_sexp
138
- end
46
+ nil_condition_sexp
139
47
  end
140
48
  end
data/spec/valias_spec.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  describe "A Valias node" do
2
- relates "alias $y $x" do
3
- parse do
4
- [:valias, :$y, :$x]
5
- end
2
+ parse "alias $y $x" do
3
+ [:valias, :$y, :$x]
6
4
  end
7
5
  end
data/spec/while_spec.rb CHANGED
@@ -6,163 +6,69 @@ describe "A While node" do
6
6
  true
7
7
  ]
8
8
 
9
- relates <<-ruby do
9
+ parse <<-ruby do
10
10
  while a
11
11
  b + 1
12
12
  end
13
13
  ruby
14
14
 
15
- parse do
16
- pre_while_sexp
17
- end
15
+ pre_while_sexp
18
16
  end
19
17
 
20
- relates <<-ruby do
18
+ parse <<-ruby do
21
19
  a = x
22
20
  while a.b
23
21
  1
24
22
  end
25
23
  ruby
26
24
 
27
- parse do
28
- [:block,
29
- [:lasgn, :a, [:call, nil, :x, [:arglist]]],
30
- [:while, [:call, [:lvar, :a], :b, [:arglist]], [:lit, 1], true]]
31
- end
25
+ [:block,
26
+ [:lasgn, :a, [:call, nil, :x, [:arglist]]],
27
+ [:while, [:call, [:lvar, :a], :b, [:arglist]], [:lit, 1], true]]
32
28
  end
33
29
 
34
- relates "b + 1 while a" do
35
- parse do
36
- pre_while_sexp
37
- end
30
+ parse "b + 1 while a" do
31
+ pre_while_sexp
38
32
  end
39
33
 
40
- relates <<-ruby do
41
- until not a
42
- b + 1
43
- end
44
- ruby
45
-
46
- parse do
47
- pre_while_sexp
48
- end
49
- end
50
-
51
- relates "b + 1 until not a" do
52
- parse do
53
- pre_while_sexp
54
- end
55
- end
56
-
57
- post_while_sexp = [
58
- :while,
59
- [:call, nil, :a, [:arglist]],
60
- [:call, [:call, nil, :b, [:arglist]], :+, [:arglist, [:lit, 1]]],
61
- false
62
- ]
63
-
64
- post_while = lambda do |g|
65
- top = g.new_label
66
- rdo = g.new_label
67
- brk = g.new_label
68
- bottom = g.new_label
69
-
70
- g.push_modifiers
71
-
72
- top.set!
73
-
74
- g.push :self
75
- g.send :b, 0, true
76
- g.push 1
77
- g.send :+, 1, false
78
- g.pop
79
-
80
- rdo.set!
81
-
82
- g.push :self
83
- g.send :a, 0, true
84
- g.gif bottom
85
-
86
- g.check_interrupts
87
- g.goto top
88
-
89
- bottom.set!
90
- g.push :nil
91
-
92
- brk.set!
93
- g.pop_modifiers
94
- end
95
-
96
- relates <<-ruby do
34
+ parse <<-ruby do
97
35
  begin
98
36
  b + 1
99
37
  end while a
100
38
  ruby
101
39
 
102
- parse do
103
- post_while_sexp
104
- end
105
- end
106
-
107
- relates <<-ruby do
108
- begin
109
- b + 1
110
- end until not a
111
- ruby
112
-
113
- parse do
114
- post_while_sexp
115
- end
40
+ [:while,
41
+ [:call, nil, :a, [:arglist]],
42
+ [:call, [:call, nil, :b, [:arglist]], :+, [:arglist, [:lit, 1]]],
43
+ false]
116
44
  end
117
45
 
118
46
  nil_condition_sexp = [:while, [:nil], [:call, nil, :a, [:arglist]], true]
119
47
 
120
- relates "a while ()" do
121
- parse do
122
- nil_condition_sexp
123
- end
48
+ parse "a while ()" do
49
+ nil_condition_sexp
124
50
  end
125
51
 
126
- relates <<-ruby do
52
+ parse <<-ruby do
127
53
  while ()
128
54
  a
129
55
  end
130
56
  ruby
131
57
 
132
- parse do
133
- nil_condition_sexp
134
- end
135
- end
136
-
137
- relates "a until not ()" do
138
-
139
- parse do
140
- nil_condition_sexp
141
- end
142
- end
143
-
144
- relates <<-ruby do
145
- until not ()
146
- a
147
- end
148
- ruby
149
-
150
- parse do
151
- nil_condition_sexp
152
- end
58
+ nil_condition_sexp
153
59
  end
154
60
 
155
- relates <<-ruby do
61
+ parse <<-ruby do
156
62
  while 1
157
63
  2
158
64
  break :brk
159
65
  end
160
66
  ruby
161
67
 
162
- # TODO
68
+ [:while, [:lit, 1], [:block, [:lit, 2], [:break, [:lit, :brk]]], true]
163
69
  end
164
70
 
165
- relates <<-ruby do
71
+ parse <<-ruby do
166
72
  while 1
167
73
  begin
168
74
  2
@@ -173,10 +79,15 @@ describe "A While node" do
173
79
  end
174
80
  ruby
175
81
 
176
- # TODO
82
+ [:while,
83
+ [:lit, 1],
84
+ [:rescue,
85
+ [:block, [:lit, 2], [:break, [:lit, :brk]]],
86
+ [:resbody, [:array, [:const, :StandardError]], [:lit, 3]]],
87
+ true]
177
88
  end
178
89
 
179
- relates <<-ruby do
90
+ parse <<-ruby do
180
91
  while 1
181
92
  begin
182
93
  2
@@ -187,6 +98,13 @@ describe "A While node" do
187
98
  end
188
99
  ruby
189
100
 
190
- # TODO
101
+ [:while,
102
+ [:lit, 1],
103
+ [:rescue,
104
+ [:lit, 2],
105
+ [:resbody,
106
+ [:array, [:const, :StandardError]],
107
+ [[:lit, 3], [:break, [:lit, :brk]]]]],
108
+ true]
191
109
  end
192
110
  end
data/spec/xstr_spec.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  describe "A Xstr node" do
2
- relates "`touch 5`" do
3
- parse do
4
- [:xstr, "touch 5"]
5
- end
2
+ parse "`touch 5`" do
3
+ [:xstr, "touch 5"]
6
4
  end
7
5
  end
data/spec/yield_spec.rb CHANGED
@@ -1,65 +1,45 @@
1
1
  describe "A Yield node" do
2
- relates "yield(42, 24)" do
3
- parse do
4
- [:yield, [:lit, 42], [:lit, 24]]
5
- end
2
+ parse "yield(42, 24)" do
3
+ [:yield, [:lit, 42], [:lit, 24]]
6
4
  end
7
5
 
8
- relates "yield([42, 24])" do
9
- parse do
10
- [:yield, [:array, [:lit, 42], [:lit, 24]]]
11
- end
6
+ parse "yield([42, 24])" do
7
+ [:yield, [:array, [:lit, 42], [:lit, 24]]]
12
8
  end
13
9
 
14
- relates "yield([42])" do
15
- parse do
16
- [:yield, [:array, [:lit, 42]]]
17
- end
10
+ parse "yield([42])" do
11
+ [:yield, [:array, [:lit, 42]]]
18
12
  end
19
13
 
20
- relates "yield([])" do
21
- parse do
22
- [:yield, [:array]]
23
- end
14
+ parse "yield([])" do
15
+ [:yield, [:array]]
24
16
  end
25
17
 
26
- relates "yield(42)" do
27
- parse do
28
- [:yield, [:lit, 42]]
29
- end
18
+ parse "yield(42)" do
19
+ [:yield, [:lit, 42]]
30
20
  end
31
21
 
32
- relates "yield" do
33
- parse do
34
- [:yield]
35
- end
22
+ parse "yield" do
23
+ [:yield]
36
24
  end
37
25
 
38
- relates "yield([*[]])" do
39
- # TODO
26
+ parse "yield([*[]])" do
27
+ [:yield, [:array, [:splat, [:array]]]]
40
28
  end
41
29
 
42
- relates "yield([*[1]])" do
43
- parse do
44
- [:yield, [:array, [:splat, [:array, [:lit, 1]]]]]
45
- end
30
+ parse "yield([*[1]])" do
31
+ [:yield, [:array, [:splat, [:array, [:lit, 1]]]]]
46
32
  end
47
33
 
48
- relates "yield([*[1, 2]])" do
49
- parse do
50
- [:yield, [:array, [:splat, [:array, [:lit, 1], [:lit, 2]]]]]
51
- end
34
+ parse "yield([*[1, 2]])" do
35
+ [:yield, [:array, [:splat, [:array, [:lit, 1], [:lit, 2]]]]]
52
36
  end
53
37
 
54
- relates "yield(*[1])" do
55
- parse do
56
- [:yield, [:splat, [:array, [:lit, 1]]]]
57
- end
38
+ parse "yield(*[1])" do
39
+ [:yield, [:splat, [:array, [:lit, 1]]]]
58
40
  end
59
41
 
60
- relates "yield(*[1, 2])" do
61
- parse do
62
- [:yield, [:splat, [:array, [:lit, 1], [:lit, 2]]]]
63
- end
42
+ parse "yield(*[1, 2])" do
43
+ [:yield, [:splat, [:array, [:lit, 1], [:lit, 2]]]]
64
44
  end
65
45
  end