rubinius-melbourne 2.0.0.19 → 2.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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