rubinius-melbourne 2.0.0.19 → 2.0.1.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +14 -0
  4. data/Gemfile +4 -0
  5. data/Rakefile +31 -0
  6. data/ext/rubinius/melbourne/extconf.rb +9 -2
  7. data/lib/rubinius/melbourne.rb +1 -1
  8. data/lib/rubinius/melbourne/version.rb +1 -1
  9. data/rubinius-melbourne.gemspec +5 -3
  10. data/spec/alias_spec.rb +40 -0
  11. data/spec/and_spec.rb +19 -0
  12. data/spec/array_spec.rb +81 -0
  13. data/spec/attrasgn_spec.rb +112 -0
  14. data/spec/back_ref_spec.rb +11 -0
  15. data/spec/call_spec.rb +298 -0
  16. data/spec/case_spec.rb +234 -0
  17. data/spec/cdecl_spec.rb +45 -0
  18. data/spec/class_spec.rb +83 -0
  19. data/spec/colon2_spec.rb +7 -0
  20. data/spec/colon3_spec.rb +7 -0
  21. data/spec/const_spec.rb +7 -0
  22. data/spec/custom/matchers/parse_as.rb +27 -0
  23. data/spec/custom/runner/relates.rb +83 -0
  24. data/spec/cvar_spec.rb +29 -0
  25. data/spec/cvasgn_spec.rb +30 -0
  26. data/spec/cvdecl_spec.rb +12 -0
  27. data/spec/default.mspec +4 -0
  28. data/spec/defined_spec.rb +117 -0
  29. data/spec/defn_spec.rb +554 -0
  30. data/spec/defs_spec.rb +81 -0
  31. data/spec/dot2_spec.rb +7 -0
  32. data/spec/dot3_spec.rb +7 -0
  33. data/spec/dregx_spec.rb +52 -0
  34. data/spec/dstr_spec.rb +169 -0
  35. data/spec/dsym_spec.rb +10 -0
  36. data/spec/dxstr_spec.rb +11 -0
  37. data/spec/ensure_spec.rb +117 -0
  38. data/spec/false_spec.rb +7 -0
  39. data/spec/flip2_spec.rb +43 -0
  40. data/spec/flip3_spec.rb +27 -0
  41. data/spec/for_spec.rb +61 -0
  42. data/spec/gasgn_spec.rb +13 -0
  43. data/spec/gvar_spec.rb +25 -0
  44. data/spec/hash_spec.rb +31 -0
  45. data/spec/iasgn_spec.rb +25 -0
  46. data/spec/if_spec.rb +131 -0
  47. data/spec/iter_spec.rb +613 -0
  48. data/spec/lasgn_spec.rb +377 -0
  49. data/spec/lit_spec.rb +61 -0
  50. data/spec/masgn_spec.rb +406 -0
  51. data/spec/match2_spec.rb +19 -0
  52. data/spec/match3_spec.rb +24 -0
  53. data/spec/match_spec.rb +7 -0
  54. data/spec/module_spec.rb +47 -0
  55. data/spec/nil_spec.rb +7 -0
  56. data/spec/not_spec.rb +17 -0
  57. data/spec/nth_ref_spec.rb +7 -0
  58. data/spec/op_asgn_spec.rb +246 -0
  59. data/spec/or_spec.rb +35 -0
  60. data/spec/postexe_spec.rb +7 -0
  61. data/spec/regex_spec.rb +28 -0
  62. data/spec/rescue_spec.rb +359 -0
  63. data/spec/return_spec.rb +57 -0
  64. data/spec/sclass_spec.rb +55 -0
  65. data/spec/str_spec.rb +97 -0
  66. data/spec/super_spec.rb +93 -0
  67. data/spec/true_spec.rb +7 -0
  68. data/spec/undef_spec.rb +98 -0
  69. data/spec/until_spec.rb +140 -0
  70. data/spec/valias_spec.rb +7 -0
  71. data/spec/while_spec.rb +192 -0
  72. data/spec/xstr_spec.rb +7 -0
  73. data/spec/yield_spec.rb +65 -0
  74. data/spec/zsuper_spec.rb +45 -0
  75. metadata +171 -13
data/spec/defs_spec.rb ADDED
@@ -0,0 +1,81 @@
1
+ describe "A Defs node" do
2
+ relates <<-ruby do
3
+ def self.x(y)
4
+ (y + 1)
5
+ end
6
+ ruby
7
+
8
+ parse do
9
+ [:defs,
10
+ [:self],
11
+ :x,
12
+ [:args, :y],
13
+ [:scope, [:block, [:call, [:lvar, :y], :+, [:arglist, [:lit, 1]]]]]]
14
+ end
15
+ end
16
+
17
+ relates <<-ruby do
18
+ def self.setup(ctx)
19
+ bind = allocate
20
+ bind.context = ctx
21
+ return bind
22
+ end
23
+ ruby
24
+
25
+ parse do
26
+ [:defs,
27
+ [:self],
28
+ :setup,
29
+ [:args, :ctx],
30
+ [:scope,
31
+ [:block,
32
+ [:lasgn, :bind, [:call, nil, :allocate, [:arglist]]],
33
+ [:attrasgn, [:lvar, :bind], :context=, [:arglist, [:lvar, :ctx]]],
34
+ [:return, [:lvar, :bind]]]]]
35
+ end
36
+ end
37
+
38
+ relates <<-ruby do
39
+ def self.empty(*)
40
+ end
41
+ ruby
42
+
43
+ parse do
44
+ [:defs, [:self], :empty, [:args, :*], [:scope, [:block]]]
45
+ end
46
+ end
47
+
48
+ relates <<-ruby do
49
+ def self.empty
50
+ end
51
+ ruby
52
+
53
+ parse do
54
+ [:defs, [:self], :empty, [:args], [:scope, [:block]]]
55
+ end
56
+ end
57
+
58
+ relates <<-ruby do
59
+ def (a.b).empty(*)
60
+ end
61
+ ruby
62
+
63
+ parse do
64
+ [:defs,
65
+ [:call, [:call, nil, :a, [:arglist]], :b, [:arglist]],
66
+ :empty,
67
+ [:args, :*],
68
+ [:scope, [:block]]]
69
+ end
70
+ end
71
+
72
+ relates <<-ruby do
73
+ x = "a"
74
+ def x.m(a)
75
+ a
76
+ end
77
+ ruby
78
+
79
+ # TODO
80
+ end
81
+ end
data/spec/dot2_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ describe "A Dot2 node" do
2
+ relates "(a..b)" do
3
+ parse do
4
+ [:dot2, [:call, nil, :a, [:arglist]], [:call, nil, :b, [:arglist]]]
5
+ end
6
+ end
7
+ end
data/spec/dot3_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ describe "A Dot3 node" do
2
+ relates "(a...b)" do
3
+ parse do
4
+ [:dot3, [:call, nil, :a, [:arglist]], [:call, nil, :b, [:arglist]]]
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,52 @@
1
+ describe "A Dregx node" do
2
+ relates <<-ruby do
3
+ /(\#{})/
4
+ ruby
5
+
6
+ parse do
7
+ [:dregx, "(", [:str, ""], [:str, ")"]]
8
+ end
9
+ end
10
+
11
+ relates "/x\#{(1 + 1)}y/" do
12
+ parse do
13
+ [:dregx,
14
+ "x",
15
+ [:evstr, [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]],
16
+ [:str, "y"]]
17
+ end
18
+ end
19
+
20
+ relates "/a\#{}b/" do
21
+ parse do
22
+ [:dregx, "a", [:str, ""], [:str, "b"]]
23
+ end
24
+ end
25
+
26
+ relates "/\#{@rakefile}/" do
27
+ parse do
28
+ [:dregx, "", [:evstr, [:ivar, :@rakefile]]]
29
+ end
30
+ end
31
+
32
+ relates "/\#{1}/n" do
33
+ parse do
34
+ [:dregx, "", [:evstr, [:lit, 1]], 16]
35
+ end
36
+ end
37
+
38
+ relates "/\#{IAC}\#{SB}/no" do
39
+ parse do
40
+ [:dregx_once, "", [:evstr, [:const, :IAC]], [:evstr, [:const, :SB]], 16]
41
+ end
42
+ end
43
+
44
+ relates "/x\#{(1 + 1)}y/o" do
45
+ parse do
46
+ [:dregx_once,
47
+ "x",
48
+ [:evstr, [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]],
49
+ [:str, "y"]]
50
+ end
51
+ end
52
+ end
data/spec/dstr_spec.rb ADDED
@@ -0,0 +1,169 @@
1
+ describe "A Dstr node" do
2
+ relates <<-ruby do
3
+ "hello \#{}"
4
+ ruby
5
+
6
+ parse do
7
+ [:dstr, "hello ", [:str, ""]]
8
+ end
9
+ end
10
+
11
+ relates <<-ruby do
12
+ argl = 1
13
+ "x\#{argl}y"
14
+ ruby
15
+
16
+ parse do
17
+ [:block,
18
+ [:lasgn, :argl, [:lit, 1]],
19
+ [:dstr, "x", [:evstr, [:lvar, :argl]], [:str, "y"]]]
20
+ end
21
+ end
22
+
23
+ relates <<-ruby do
24
+ argl = 1
25
+ "x\#{("%.2f" % 3.14159)}y"
26
+ ruby
27
+
28
+ parse do
29
+ [:block,
30
+ [:lasgn, :argl, [:lit, 1]],
31
+ [:dstr,
32
+ "x",
33
+ [:evstr, [:call, [:str, "%.2f"], :%, [:arglist, [:lit, 3.14159]]]],
34
+ [:str, "y"]]]
35
+ end
36
+ end
37
+
38
+ relates <<-ruby do
39
+ max = 2
40
+ argl = 1
41
+ "x\#{("%.\#{max}f" % 3.14159)}y"
42
+ ruby
43
+
44
+ parse do
45
+ [:block,
46
+ [:lasgn, :max, [:lit, 2]],
47
+ [:lasgn, :argl, [:lit, 1]],
48
+ [:dstr,
49
+ "x",
50
+ [:evstr,
51
+ [:call,
52
+ [:dstr, "%.", [:evstr, [:lvar, :max]], [:str, "f"]],
53
+ :%,
54
+ [:arglist, [:lit, 3.14159]]]],
55
+ [:str, "y"]]]
56
+ end
57
+ end
58
+
59
+ relates '"#{22}aa" "cd#{44}" "55" "#{66}"' do
60
+ parse do
61
+ [:dstr,
62
+ "",
63
+ [:evstr, [:lit, 22]],
64
+ [:str, "aa"],
65
+ [:str, "cd"],
66
+ [:evstr, [:lit, 44]],
67
+ [:str, "55"],
68
+ [:evstr, [:lit, 66]]]
69
+ end
70
+ end
71
+
72
+ relates '"a #$global b #@ivar c #@@cvar d"' do
73
+ parse do
74
+ [:dstr,
75
+ "a ",
76
+ [:evstr, [:gvar, :$global]],
77
+ [:str, " b "],
78
+ [:evstr, [:ivar, :@ivar]],
79
+ [:str, " c "],
80
+ [:evstr, [:cvar, :@@cvar]],
81
+ [:str, " d"]]
82
+ end
83
+ end
84
+
85
+ relates <<-ruby do
86
+ <<EOM
87
+ blah
88
+ \#{1 + 1}blah
89
+ EOM
90
+ ruby
91
+
92
+ parse do
93
+ [:dstr,
94
+ " blah\n",
95
+ [:evstr, [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]],
96
+ [:str, "blah\n"]]
97
+ end
98
+ end
99
+
100
+ relates <<-ruby do
101
+ <<-EOF
102
+ def test_\#{action}_valid_feed
103
+ EOF
104
+ ruby
105
+
106
+ parse do
107
+ [:dstr,
108
+ "def test_",
109
+ [:evstr, [:call, nil, :action, [:arglist]]],
110
+ [:str, "_valid_feed\n"]]
111
+ end
112
+ end
113
+
114
+ relates <<-ruby do
115
+ <<-EOF
116
+ s1 '\#{RUBY_PLATFORM}' s2
117
+ \#{__FILE__}
118
+ EOF
119
+ ruby
120
+
121
+ parse do
122
+ [:dstr,
123
+ "s1 '",
124
+ [:evstr, [:const, :RUBY_PLATFORM]],
125
+ [:str, "' s2\n"],
126
+ [:evstr, [:file]],
127
+ [:str, "\n"]]
128
+ end
129
+ end
130
+
131
+ relates "%Q[before [\#{nest}] after]" do
132
+ parse do
133
+ [:dstr,
134
+ "before [",
135
+ [:evstr, [:call, nil, :nest, [:arglist]]],
136
+ [:str, "] after"]]
137
+ end
138
+ end
139
+
140
+ relates '"#{"blah"}#{__FILE__}:#{__LINE__}: warning: #{$!.message} (#{$!.class})"' do
141
+ parse do
142
+ [:dstr,
143
+ "blah",
144
+ [:evstr, [:file]],
145
+ [:str, ":"],
146
+ [:evstr, [:lit, 1]],
147
+ [:str, ": warning: "],
148
+ [:evstr, [:call, [:gvar, :$!], :message, [:arglist]]],
149
+ [:str, " ("],
150
+ [:evstr, [:call, [:gvar, :$!], :class, [:arglist]]],
151
+ [:str, ")"]]
152
+ end
153
+ end
154
+
155
+ relates '"before #{from} middle #{to} (#{__FILE__}:#{__LINE__})"' do
156
+ parse do
157
+ [:dstr,
158
+ "before ",
159
+ [:evstr, [:call, nil, :from, [:arglist]]],
160
+ [:str, " middle "],
161
+ [:evstr, [:call, nil, :to, [:arglist]]],
162
+ [:str, " ("],
163
+ [:evstr, [:file]],
164
+ [:str, ":"],
165
+ [:evstr, [:lit, 1]],
166
+ [:str, ")"]]
167
+ end
168
+ end
169
+ end
data/spec/dsym_spec.rb ADDED
@@ -0,0 +1,10 @@
1
+ describe "A Dsym node" do
2
+ relates ':"x#{(1 + 1)}y"' do
3
+ parse do
4
+ [:dsym,
5
+ "x",
6
+ [:evstr, [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]]],
7
+ [:str, "y"]]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ describe "A Dxstr node" do
2
+ relates <<-ruby do
3
+ t = 5
4
+ `touch \#{t}`
5
+ ruby
6
+
7
+ parse do
8
+ [:block, [:lasgn, :t, [:lit, 5]], [:dxstr, "touch ", [:evstr, [:lvar, :t]]]]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,117 @@
1
+ describe "An Ensure node" do
2
+ relates <<-ruby do
3
+ begin
4
+ # do nothing
5
+ rescue
6
+ # do nothing
7
+ ensure
8
+ # do nothing
9
+ end
10
+ ruby
11
+
12
+ parse do
13
+ [:ensure, [:rescue, [:resbody, [:array], nil]], [:nil]]
14
+ end
15
+ end
16
+
17
+ relates <<-ruby do
18
+ begin
19
+ (1 + 1)
20
+ rescue SyntaxError => e1
21
+ 2
22
+ rescue Exception => e2
23
+ 3
24
+ else
25
+ 4
26
+ ensure
27
+ 5
28
+ end
29
+ ruby
30
+
31
+ parse do
32
+ [:ensure,
33
+ [:rescue,
34
+ [:call, [:lit, 1], :+, [:arglist, [:lit, 1]]],
35
+ [:resbody,
36
+ [:array, [:const, :SyntaxError], [:lasgn, :e1, [:gvar, :$!]]],
37
+ [:lit, 2]],
38
+ [:resbody,
39
+ [:array, [:const, :Exception], [:lasgn, :e2, [:gvar, :$!]]],
40
+ [:lit, 3]],
41
+ [:lit, 4]],
42
+ [:lit, 5]]
43
+ end
44
+ end
45
+
46
+ relates <<-ruby do
47
+ begin
48
+ a
49
+ rescue
50
+ # do nothing
51
+ ensure
52
+ # do nothing
53
+ end
54
+ ruby
55
+
56
+ parse do
57
+ [:ensure,
58
+ [:rescue, [:call, nil, :a, [:arglist]], [:resbody, [:array], nil]],
59
+ [:nil]]
60
+ end
61
+ end
62
+
63
+ relates <<-ruby do
64
+ begin
65
+ 14
66
+ return 2
67
+ ensure
68
+ 13
69
+ end
70
+ ruby
71
+
72
+ parse do
73
+ [:ensure, [:block, [:lit, 14], [:return, [:lit, 2]]], [:lit, 13]]
74
+ end
75
+ end
76
+
77
+ relates <<-ruby do
78
+ begin
79
+ begin
80
+ 14
81
+ return 2
82
+ ensure
83
+ 13
84
+ end
85
+ ensure
86
+ 15
87
+ end
88
+ ruby
89
+
90
+ parse do
91
+ [:ensure,
92
+ [:ensure, [:block, [:lit, 14], [:return, [:lit, 2]]], [:lit, 13]],
93
+ [:lit, 15]]
94
+ end
95
+ end
96
+
97
+ relates <<-ruby do
98
+ begin
99
+ 14
100
+ return 2
101
+ ensure
102
+ begin
103
+ 15
104
+ return 3
105
+ ensure
106
+ 16
107
+ end
108
+ end
109
+ ruby
110
+
111
+ parse do
112
+ [:ensure,
113
+ [:block, [:lit, 14], [:return, [:lit, 2]]],
114
+ [:ensure, [:block, [:lit, 15], [:return, [:lit, 3]]], [:lit, 16]]]
115
+ end
116
+ end
117
+ end