ripper_ruby_parser 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +19 -0
  3. data/README.md +2 -2
  4. data/Rakefile +1 -1
  5. data/lib/ripper_ruby_parser.rb +0 -7
  6. data/lib/ripper_ruby_parser/commenting_ripper_parser.rb +112 -34
  7. data/lib/ripper_ruby_parser/parser.rb +26 -12
  8. data/lib/ripper_ruby_parser/sexp_handlers.rb +4 -1
  9. data/lib/ripper_ruby_parser/sexp_handlers/arguments.rb +7 -6
  10. data/lib/ripper_ruby_parser/sexp_handlers/arrays.rb +4 -2
  11. data/lib/ripper_ruby_parser/sexp_handlers/assignment.rb +39 -43
  12. data/lib/ripper_ruby_parser/sexp_handlers/blocks.rb +93 -69
  13. data/lib/ripper_ruby_parser/sexp_handlers/conditionals.rb +30 -24
  14. data/lib/ripper_ruby_parser/sexp_handlers/hashes.rb +7 -9
  15. data/lib/ripper_ruby_parser/sexp_handlers/helper_methods.rb +51 -71
  16. data/lib/ripper_ruby_parser/sexp_handlers/literals.rb +72 -56
  17. data/lib/ripper_ruby_parser/sexp_handlers/loops.rb +14 -13
  18. data/lib/ripper_ruby_parser/sexp_handlers/method_calls.rb +19 -13
  19. data/lib/ripper_ruby_parser/sexp_handlers/methods.rb +19 -22
  20. data/lib/ripper_ruby_parser/sexp_handlers/operators.rb +47 -35
  21. data/lib/ripper_ruby_parser/sexp_processor.rb +72 -85
  22. data/lib/ripper_ruby_parser/version.rb +1 -1
  23. data/test/end_to_end/line_numbering_test.rb +1 -1
  24. data/test/end_to_end/samples_comparison_test.rb +0 -1
  25. data/test/pt_testcase/pt_test.rb +4 -6
  26. data/test/{unit → ripper_ruby_parser}/commenting_ripper_parser_test.rb +82 -25
  27. data/test/{unit → ripper_ruby_parser}/parser_test.rb +37 -170
  28. data/test/{unit/parser_assignment_test.rb → ripper_ruby_parser/sexp_handlers/assignment_test.rb} +1 -1
  29. data/test/{unit/parser_blocks_test.rb → ripper_ruby_parser/sexp_handlers/blocks_test.rb} +267 -2
  30. data/test/{unit/parser_conditionals_test.rb → ripper_ruby_parser/sexp_handlers/conditionals_test.rb} +125 -17
  31. data/test/{unit/parser_literals_test.rb → ripper_ruby_parser/sexp_handlers/literals_test.rb} +10 -12
  32. data/test/{unit/parser_loops_test.rb → ripper_ruby_parser/sexp_handlers/loops_test.rb} +1 -1
  33. data/test/{unit/parser_method_calls_test.rb → ripper_ruby_parser/sexp_handlers/method_calls_test.rb} +10 -10
  34. data/test/{unit/parser_operators_test.rb → ripper_ruby_parser/sexp_handlers/operators_test.rb} +22 -2
  35. data/test/{unit → ripper_ruby_parser}/sexp_processor_test.rb +49 -48
  36. data/test/{unit → ripper_ruby_parser}/version_test.rb +0 -0
  37. data/test/samples/misc.rb +4 -0
  38. data/test/test_helper.rb +4 -4
  39. metadata +28 -42
  40. data/test/end_to_end/error_conditions_test.rb +0 -51
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
1
+ require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
2
2
 
3
3
  describe RipperRubyParser::Parser do
4
4
  describe '#parse' do
@@ -8,7 +8,7 @@ describe RipperRubyParser::Parser do
8
8
  must_be_parsed_as s(:lit, /foo/)
9
9
  end
10
10
 
11
- it 'works for regex literals with escaped right bracket' do
11
+ it 'works for regex literals with escaped right parenthesis' do
12
12
  '/\\)/'.
13
13
  must_be_parsed_as s(:lit, /\)/)
14
14
  end
@@ -155,12 +155,12 @@ describe RipperRubyParser::Parser do
155
155
  must_be_parsed_as s(:str, '\\n')
156
156
  end
157
157
 
158
- it 'works for a representation of a regex literal with escaped right bracket' do
158
+ it 'works for a representation of a regex literal with escaped right parenthesis' do
159
159
  '"/\\\\)/"'.
160
160
  must_be_parsed_as s(:str, '/\\)/')
161
161
  end
162
162
 
163
- it 'works for a uselessly escaped right bracket' do
163
+ it 'works for a uselessly escaped right parenthesis' do
164
164
  '"/\\)/"'.
165
165
  must_be_parsed_as s(:str, '/)/')
166
166
  end
@@ -210,7 +210,6 @@ describe RipperRubyParser::Parser do
210
210
 
211
211
  # TODO: Implement remaining escape sequence cases.
212
212
 
213
- # TODO: Behave differently in extra_compatible mode.
214
213
  it 'works with unicode escapes (unlike RubyParser)' do
215
214
  '"foo\\u273bbar"'.must_be_parsed_as s(:str, 'foo✻bar')
216
215
  end
@@ -355,12 +354,12 @@ describe RipperRubyParser::Parser do
355
354
  end
356
355
 
357
356
  describe 'for word list literals' do
358
- it 'works for the simle case with %w' do
359
- '%W(foo bar)'.
357
+ it 'works for the simple case with %w' do
358
+ '%w(foo bar)'.
360
359
  must_be_parsed_as s(:array, s(:str, 'foo'), s(:str, 'bar'))
361
360
  end
362
361
 
363
- it 'works for the simle case with %W' do
362
+ it 'works for the simple case with %W' do
364
363
  '%W(foo bar)'.
365
364
  must_be_parsed_as s(:array, s(:str, 'foo'), s(:str, 'bar'))
366
365
  end
@@ -407,7 +406,7 @@ describe RipperRubyParser::Parser do
407
406
  "%I(foo \#{bar} baz)".
408
407
  must_be_parsed_as s(:array,
409
408
  s(:lit, :foo),
410
- s(:dsym, "", s(:evstr, s(:call, nil, :bar))),
409
+ s(:dsym, '', s(:evstr, s(:call, nil, :bar))),
411
410
  s(:lit, :baz))
412
411
  end
413
412
 
@@ -416,9 +415,9 @@ describe RipperRubyParser::Parser do
416
415
  must_be_parsed_as s(:array,
417
416
  s(:lit, :foo),
418
417
  s(:dsym,
419
- "",
418
+ '',
420
419
  s(:evstr, s(:call, nil, :bar)),
421
- s(:str, "baz")))
420
+ s(:str, 'baz')))
422
421
  end
423
422
  end
424
423
 
@@ -559,7 +558,6 @@ describe RipperRubyParser::Parser do
559
558
  end
560
559
 
561
560
  it 'works for a hash with dynamic label keys' do
562
- skip 'This is not valid syntax below Ruby 2.2' if RUBY_VERSION < '2.2.0'
563
561
  "{'foo': bar}".
564
562
  must_be_parsed_as s(:hash,
565
563
  s(:lit, :foo),
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
1
+ require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
2
2
 
3
3
  describe RipperRubyParser::Parser do
4
4
  describe '#parse' do
@@ -1,27 +1,27 @@
1
- require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
1
+ require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
2
2
 
3
3
  describe RipperRubyParser::Parser do
4
4
  describe '#parse' do
5
5
  describe 'for method calls' do
6
6
  describe 'without a receiver' do
7
- it 'works without brackets' do
7
+ it 'works without parentheses' do
8
8
  'foo bar'.
9
9
  must_be_parsed_as s(:call, nil, :foo,
10
10
  s(:call, nil, :bar))
11
11
  end
12
12
 
13
- it 'works with brackets' do
13
+ it 'works with parentheses' do
14
14
  'foo(bar)'.
15
15
  must_be_parsed_as s(:call, nil, :foo,
16
16
  s(:call, nil, :bar))
17
17
  end
18
18
 
19
- it 'works with an empty parameter list and no brackets' do
19
+ it 'works with an empty parameter list and no parentheses' do
20
20
  'foo'.
21
21
  must_be_parsed_as s(:call, nil, :foo)
22
22
  end
23
23
 
24
- it 'works with brackets around an empty parameter list' do
24
+ it 'works with parentheses around an empty parameter list' do
25
25
  'foo()'.
26
26
  must_be_parsed_as s(:call, nil, :foo)
27
27
  end
@@ -31,7 +31,7 @@ describe RipperRubyParser::Parser do
31
31
  must_be_parsed_as s(:call, nil, :foo?)
32
32
  end
33
33
 
34
- it 'works with nested calls without brackets' do
34
+ it 'works with nested calls without parentheses' do
35
35
  'foo bar baz'.
36
36
  must_be_parsed_as s(:call, nil, :foo,
37
37
  s(:call, nil, :bar,
@@ -102,7 +102,7 @@ describe RipperRubyParser::Parser do
102
102
  end
103
103
 
104
104
  describe 'with a receiver' do
105
- it 'works without brackets' do
105
+ it 'works without parentheses' do
106
106
  'foo.bar baz'.
107
107
  must_be_parsed_as s(:call,
108
108
  s(:call, nil, :foo),
@@ -110,7 +110,7 @@ describe RipperRubyParser::Parser do
110
110
  s(:call, nil, :baz))
111
111
  end
112
112
 
113
- it 'works with brackets' do
113
+ it 'works with parentheses' do
114
114
  'foo.bar(baz)'.
115
115
  must_be_parsed_as s(:call,
116
116
  s(:call, nil, :foo),
@@ -118,7 +118,7 @@ describe RipperRubyParser::Parser do
118
118
  s(:call, nil, :baz))
119
119
  end
120
120
 
121
- it 'works with brackets around a call with no brackets' do
121
+ it 'works with parentheses around a call with no parentheses' do
122
122
  'foo.bar(baz qux)'.
123
123
  must_be_parsed_as s(:call,
124
124
  s(:call, nil, :foo),
@@ -127,7 +127,7 @@ describe RipperRubyParser::Parser do
127
127
  s(:call, nil, :qux)))
128
128
  end
129
129
 
130
- it 'works with nested calls without brackets' do
130
+ it 'works with nested calls without parentheses' do
131
131
  'foo.bar baz qux'.
132
132
  must_be_parsed_as s(:call,
133
133
  s(:call, nil, :foo),
@@ -1,4 +1,4 @@
1
- require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
1
+ require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
2
2
 
3
3
  describe RipperRubyParser::Parser do
4
4
  describe '#parse' do
@@ -88,7 +88,7 @@ describe RipperRubyParser::Parser do
88
88
  s(:call, nil, :baz)))
89
89
  end
90
90
 
91
- it 'handles bracketed :||' do
91
+ it 'handles :|| with parentheses' do
92
92
  '(foo || bar) || baz'.
93
93
  must_be_parsed_as s(:or,
94
94
  s(:or,
@@ -97,6 +97,15 @@ describe RipperRubyParser::Parser do
97
97
  s(:call, nil, :baz))
98
98
  end
99
99
 
100
+ it 'handles nested :|| with parentheses' do
101
+ 'foo || (bar || baz) || qux'.
102
+ must_be_parsed_as s(:or,
103
+ s(:call, nil, :foo),
104
+ s(:or,
105
+ s(:or, s(:call, nil, :bar), s(:call, nil, :baz)),
106
+ s(:call, nil, :qux)))
107
+ end
108
+
100
109
  it 'converts :|| to :or' do
101
110
  'foo || bar'.
102
111
  must_be_parsed_as s(:or,
@@ -114,6 +123,17 @@ describe RipperRubyParser::Parser do
114
123
  s(:call, nil, :baz),
115
124
  s(:call, nil, :qux))))
116
125
  end
126
+
127
+ it 'handles triple :&&' do
128
+ 'foo && bar && baz && qux'.
129
+ must_be_parsed_as s(:and,
130
+ s(:call, nil, :foo),
131
+ s(:and,
132
+ s(:call, nil, :bar),
133
+ s(:and,
134
+ s(:call, nil, :baz),
135
+ s(:call, nil, :qux))))
136
+ end
117
137
  end
118
138
 
119
139
  describe 'for unary numerical operators' do
@@ -1,17 +1,17 @@
1
1
  require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
2
2
 
3
3
  class TestProcessor < RipperRubyParser::SexpProcessor
4
- def process_foo exp
4
+ def process_foo(exp)
5
5
  exp.shift
6
6
  s(:foo_p)
7
7
  end
8
8
 
9
- def process_bar exp
9
+ def process_bar(exp)
10
10
  exp.shift
11
11
  s(:bar_p)
12
12
  end
13
13
 
14
- def process_baz exp
14
+ def process_baz(exp)
15
15
  exp.shift
16
16
  s(:baz_p)
17
17
  end
@@ -25,13 +25,13 @@ describe RipperRubyParser::SexpProcessor do
25
25
  describe '#process' do
26
26
  describe 'for a :program sexp' do
27
27
  it 'strips off the outer :program node' do
28
- sexp = s(:program, s(s(:foo)))
28
+ sexp = s(:program, s(:stmts, s(:foo)))
29
29
  result = processor.process sexp
30
30
  result.must_equal s(:foo_p)
31
31
  end
32
32
 
33
33
  it 'transforms a multi-statement :program into a :block sexp' do
34
- sexp = s(:program, s(s(:foo), s(:bar)))
34
+ sexp = s(:program, s(:stmts, s(:foo), s(:bar)))
35
35
  result = processor.process sexp
36
36
  result.must_equal s(:block, s(:foo_p), s(:bar_p))
37
37
  end
@@ -47,13 +47,13 @@ describe RipperRubyParser::SexpProcessor do
47
47
 
48
48
  describe 'for an :args_add_block sexp' do
49
49
  it 'transforms a one-argument sexp to an :arglist' do
50
- sexp = s(:args_add_block, s(s(:foo)), false)
50
+ sexp = s(:args_add_block, s(:args, s(:foo)), false)
51
51
  result = processor.process sexp
52
52
  result.must_equal s(:arglist, s(:foo_p))
53
53
  end
54
54
 
55
55
  it 'transforms a multi-argument sexp to an :arglist' do
56
- sexp = s(:args_add_block, s(s(:foo), s(:bar)), false)
56
+ sexp = s(:args_add_block, s(:args, s(:foo), s(:bar)), false)
57
57
  result = processor.process sexp
58
58
  result.must_equal s(:arglist, s(:foo_p), s(:bar_p))
59
59
  end
@@ -87,7 +87,7 @@ describe RipperRubyParser::SexpProcessor do
87
87
  it 'does not create body eleents for an empty definition' do
88
88
  sexp = s(:module,
89
89
  s(:const_ref, s(:@const, 'Foo', s(1, 13))),
90
- s(:bodystmt, s(s(:void_stmt)), nil, nil, nil))
90
+ s(:bodystmt, s(:stmts, s(:void_stmt)), nil, nil, nil))
91
91
  result = processor.process sexp
92
92
  result.must_equal s(:module, :Foo)
93
93
  end
@@ -95,7 +95,7 @@ describe RipperRubyParser::SexpProcessor do
95
95
  it 'creates a single body element for a definition with one statement' do
96
96
  sexp = s(:module,
97
97
  s(:const_ref, s(:@const, 'Foo', s(1, 13))),
98
- s(:bodystmt, s(s(:foo)), nil, nil, nil))
98
+ s(:bodystmt, s(:stmts, s(:foo)), nil, nil, nil))
99
99
  result = processor.process sexp
100
100
  result.must_equal s(:module, :Foo, s(:foo_p))
101
101
  end
@@ -103,7 +103,7 @@ describe RipperRubyParser::SexpProcessor do
103
103
  it 'creates multiple body elements for a definition with more than one statement' do
104
104
  sexp = s(:module,
105
105
  s(:const_ref, s(:@const, 'Foo', s(1, 13))),
106
- s(:bodystmt, s(s(:foo), s(:bar)), nil, nil, nil))
106
+ s(:bodystmt, s(:stmts, s(:foo), s(:bar)), nil, nil, nil))
107
107
  result = processor.process sexp
108
108
  result.must_equal s(:module, :Foo, s(:foo_p), s(:bar_p))
109
109
  end
@@ -113,7 +113,7 @@ describe RipperRubyParser::SexpProcessor do
113
113
  it 'does not create body eleents for an empty definition' do
114
114
  sexp = s(:class,
115
115
  s(:const_ref, s(:@const, 'Foo', s(1, 13))), nil,
116
- s(:bodystmt, s(s(:void_stmt)), nil, nil, nil))
116
+ s(:bodystmt, s(:stmts, s(:void_stmt)), nil, nil, nil))
117
117
  result = processor.process sexp
118
118
  result.must_equal s(:class, :Foo, nil)
119
119
  end
@@ -121,7 +121,7 @@ describe RipperRubyParser::SexpProcessor do
121
121
  it 'creates a single body element for a definition with one statement' do
122
122
  sexp = s(:class,
123
123
  s(:const_ref, s(:@const, 'Foo', s(1, 13))), nil,
124
- s(:bodystmt, s(s(:foo)), nil, nil, nil))
124
+ s(:bodystmt, s(:stmts, s(:foo)), nil, nil, nil))
125
125
  result = processor.process sexp
126
126
  result.must_equal s(:class, :Foo, nil, s(:foo_p))
127
127
  end
@@ -129,7 +129,7 @@ describe RipperRubyParser::SexpProcessor do
129
129
  it 'creates multiple body elements for a definition with more than one statement' do
130
130
  sexp = s(:class,
131
131
  s(:const_ref, s(:@const, 'Foo', s(1, 13))), nil,
132
- s(:bodystmt, s(s(:foo), s(:bar)), nil, nil, nil))
132
+ s(:bodystmt, s(:stmts, s(:foo), s(:bar)), nil, nil, nil))
133
133
  result = processor.process sexp
134
134
  result.must_equal s(:class, :Foo, nil, s(:foo_p), s(:bar_p))
135
135
  end
@@ -138,23 +138,23 @@ describe RipperRubyParser::SexpProcessor do
138
138
  sexp = s(:class,
139
139
  s(:const_ref, s(:@const, 'Foo', s(1, 13))),
140
140
  s(:var_ref, s(:@const, 'Bar', s(1, 12))),
141
- s(:bodystmt, s(s(:void_stmt)), nil, nil, nil))
141
+ s(:bodystmt, s(:stmts, s(:void_stmt)), nil, nil, nil))
142
142
  result = processor.process sexp
143
143
  result.must_equal s(:class, :Foo, s(:const, :Bar))
144
144
  end
145
145
  end
146
146
 
147
147
  describe 'for a :bodystmt sexp' do
148
- it 'creates a :scope sexp with nested :block' do
149
- sexp = s(:bodystmt, s(s(:foo), s(:bar)), nil, nil, nil)
148
+ it 'creates a :block sexp when multiple statements are present' do
149
+ sexp = s(:bodystmt, s(:stmts, s(:foo), s(:bar)), nil, nil, nil)
150
150
  result = processor.process sexp
151
- result.must_equal s(s(:block, s(:foo_p), s(:bar_p)))
151
+ result.must_equal s(:block, s(:foo_p), s(:bar_p))
152
152
  end
153
153
 
154
154
  it 'removes nested :void_stmt sexps' do
155
- sexp = s(:bodystmt, s(s(:void_stmt), s(:foo)), nil, nil, nil)
155
+ sexp = s(:bodystmt, s(:stmts, s(:void_stmt), s(:foo)), nil, nil, nil)
156
156
  result = processor.process sexp
157
- result.must_equal s(s(:foo_p))
157
+ result.must_equal s(:foo_p)
158
158
  end
159
159
  end
160
160
 
@@ -163,7 +163,7 @@ describe RipperRubyParser::SexpProcessor do
163
163
  sexp = s(:def,
164
164
  s(:@ident, 'foo', s(1, 4)),
165
165
  s(:params, nil, nil, nil, nil, nil),
166
- s(:bodystmt, s(s(:void_stmt)), nil, nil, nil))
166
+ s(:bodystmt, s(:stmts, s(:void_stmt)), nil, nil, nil))
167
167
  result = processor.process sexp
168
168
  result.must_equal s(:defn, :foo, s(:args), s(:nil))
169
169
  end
@@ -177,6 +177,27 @@ describe RipperRubyParser::SexpProcessor do
177
177
  result.must_equal s(:args, s(:lvar, :bar))
178
178
  end
179
179
  end
180
+
181
+ describe 'with a ruby 2.4-style doublesplat argument' do
182
+ it 'creates :lvar sexps' do
183
+ sexp = s(:params,
184
+ nil, nil, nil, nil, nil,
185
+ s(:@ident, 'bar', s(1, 8)),
186
+ nil)
187
+ result = processor.process sexp
188
+ result.must_equal s(:args, s(:dsplat, s(:lvar, :bar)))
189
+ end
190
+ end
191
+ describe 'with a ruby 2.5-style kwrest argument' do
192
+ it 'creates :lvar sexps' do
193
+ sexp = s(:params,
194
+ nil, nil, nil, nil, nil,
195
+ s(:kwrest_param, s(:@ident, 'bar', s(1, 8))),
196
+ nil)
197
+ result = processor.process sexp
198
+ result.must_equal s(:args, s(:dsplat, s(:lvar, :bar)))
199
+ end
200
+ end
180
201
  end
181
202
 
182
203
  describe 'for an :assign sexp' do
@@ -201,7 +222,7 @@ describe RipperRubyParser::SexpProcessor do
201
222
  it 'creates an :iter sexp' do
202
223
  sexp = s(:method_add_block,
203
224
  s(:call, s(:foo), :".", s(:@ident, 'baz', s(1, 2))),
204
- s(:brace_block, nil, s(s(:bar))))
225
+ s(:brace_block, nil, s(:stmts, s(:bar))))
205
226
  result = processor.process sexp
206
227
  result.must_equal s(:iter,
207
228
  s(:call, s(:foo_p), :baz), 0,
@@ -216,7 +237,7 @@ describe RipperRubyParser::SexpProcessor do
216
237
  s(:block_var,
217
238
  s(:params, s(s(:@ident, 'i', s(1, 6))), nil, nil, nil, nil),
218
239
  nil),
219
- s(s(:bar))))
240
+ s(:stmts, s(:bar))))
220
241
  result = processor.process sexp
221
242
  result.must_equal s(:iter,
222
243
  s(:call, s(:foo_p), :baz),
@@ -229,7 +250,7 @@ describe RipperRubyParser::SexpProcessor do
229
250
  describe 'for an :if sexp' do
230
251
  describe 'with a single statement in the if body' do
231
252
  it 'uses the statement sexp as the body' do
232
- sexp = s(:if, s(:foo), s(s(:bar)), nil)
253
+ sexp = s(:if, s(:foo), s(:stmts, s(:bar)), nil)
233
254
  result = processor.process sexp
234
255
  result.must_equal s(:if, s(:foo_p), s(:bar_p), nil)
235
256
  end
@@ -237,7 +258,7 @@ describe RipperRubyParser::SexpProcessor do
237
258
 
238
259
  describe 'with multiple statements in the if body' do
239
260
  it 'uses a block containing the statement sexps as the body' do
240
- sexp = s(:if, s(:foo), s(s(:bar), s(:baz)), nil)
261
+ sexp = s(:if, s(:foo), s(:stmts, s(:bar), s(:baz)), nil)
241
262
  result = processor.process sexp
242
263
  result.must_equal s(:if, s(:foo_p), s(:block, s(:bar_p), s(:baz_p)), nil)
243
264
  end
@@ -246,7 +267,7 @@ describe RipperRubyParser::SexpProcessor do
246
267
 
247
268
  describe 'for an :array sexp' do
248
269
  it 'pulls up the element sexps' do
249
- sexp = s(:array, s(s(:foo), s(:bar), s(:baz)))
270
+ sexp = s(:array, s(:words, s(:foo), s(:bar), s(:baz)))
250
271
  result = processor.process sexp
251
272
  result.must_equal s(:array, s(:foo_p), s(:bar_p), s(:baz_p))
252
273
  end
@@ -264,9 +285,9 @@ describe RipperRubyParser::SexpProcessor do
264
285
 
265
286
  describe 'for a :when sexp' do
266
287
  it 'turns nested :when clauses into a list' do
267
- sexp = s(:when, s(s(:foo)), s(s(:bar)),
268
- s(:when, s(s(:foo)), s(s(:bar)),
269
- s(:when, s(s(:foo)), s(s(:bar)), nil)))
288
+ sexp = s(:when, s(:args, s(:foo)), s(:stmts, s(:bar)),
289
+ s(:when, s(:args, s(:foo)), s(:stmts, s(:bar)),
290
+ s(:when, s(:args, s(:foo)), s(:stmts, s(:bar)), nil)))
270
291
  result = processor.process sexp
271
292
  result.must_equal s(s(:when, s(:array, s(:foo_p)), s(:bar_p)),
272
293
  s(:when, s(:array, s(:foo_p)), s(:bar_p)),
@@ -289,24 +310,4 @@ describe RipperRubyParser::SexpProcessor do
289
310
  result.must_equal :Foo
290
311
  end
291
312
  end
292
-
293
- describe '#trickle_up_line_numbers' do
294
- it 'works through several nested levels' do
295
- inner = s(:foo)
296
- outer = s(:bar, s(:baz, s(:qux, inner)))
297
- outer.line = 42
298
- processor.send :trickle_down_line_numbers, outer
299
- inner.line.must_equal 42
300
- end
301
- end
302
-
303
- describe '#trickle_down_line_numbers' do
304
- it 'works through several nested levels' do
305
- inner = s(:foo)
306
- inner.line = 42
307
- outer = s(:bar, s(:baz, s(:qux, inner)))
308
- processor.send :trickle_up_line_numbers, outer
309
- outer.line.must_equal 42
310
- end
311
- end
312
313
  end