File tree Expand file tree Collapse file tree 2 files changed +35
-9
lines changed Expand file tree Collapse file tree 2 files changed +35
-9
lines changed Original file line number Diff line number Diff line change @@ -2022,31 +2022,25 @@ def scan
2022
2022
def skip_optional_do_after_expression
2023
2023
skip_tkspace false
2024
2024
tk = get_tk
2025
- end_token = get_end_token tk
2026
2025
2027
2026
b_nest = 0
2028
2027
nest = 0
2029
2028
@scanner . continue = false
2030
2029
2031
2030
loop do
2032
2031
case tk
2033
- when TkSEMICOLON then
2032
+ when TkSEMICOLON , TkNL then
2034
2033
break if b_nest . zero?
2035
2034
when TkLPAREN , TkfLPAREN then
2036
2035
nest += 1
2036
+ when TkRPAREN then
2037
+ nest -= 1
2037
2038
when TkBEGIN then
2038
2039
b_nest += 1
2039
2040
when TkEND then
2040
2041
b_nest -= 1
2041
2042
when TkDO
2042
2043
break if nest . zero?
2043
- when end_token then
2044
- if end_token == TkRPAREN
2045
- nest -= 1
2046
- break if @scanner . lex_state == :EXPR_END and nest . zero?
2047
- else
2048
- break unless @scanner . continue
2049
- end
2050
2044
when nil then
2051
2045
break
2052
2046
end
Original file line number Diff line number Diff line change @@ -2467,6 +2467,38 @@ class DateTime < Date
2467
2467
assert_equal :private , date_time_now . visibility , date_time_now . full_name
2468
2468
end
2469
2469
2470
+ def test_parse_statements_complex_condition_in_for
2471
+ util_parser <<RUBY
2472
+ class Foo
2473
+ def blah()
2474
+ for i in (k)...n do
2475
+ end
2476
+ for i in (k)...n
2477
+ end
2478
+ end
2479
+ end
2480
+ RUBY
2481
+
2482
+ expected = <<EXPTECTED
2483
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">blah</span>()
2484
+ <span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> (<span class="ruby-identifier">k</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">n</span> <span class="ruby-keyword">do</span>
2485
+ <span class="ruby-keyword">end</span>
2486
+ <span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> (<span class="ruby-identifier">k</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">n</span>
2487
+ <span class="ruby-keyword">end</span>
2488
+ <span class="ruby-keyword">end</span>
2489
+ EXPTECTED
2490
+ expected = expected . rstrip
2491
+
2492
+ @parser . scan
2493
+
2494
+ foo = @top_level . classes . first
2495
+ assert_equal 'Foo' , foo . full_name
2496
+
2497
+ blah = foo . method_list . first
2498
+ markup_code = blah . markup_code . sub ( /^.*\n / , '' )
2499
+ assert_equal markup_code , expected
2500
+ end
2501
+
2470
2502
def test_parse_require_dynamic_string
2471
2503
content = <<-RUBY
2472
2504
prefix = 'path'
You can’t perform that action at this time.
0 commit comments