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
20222022 def skip_optional_do_after_expression
20232023 skip_tkspace false
20242024 tk = get_tk
2025- end_token = get_end_token tk
20262025
20272026 b_nest = 0
20282027 nest = 0
20292028 @scanner . continue = false
20302029
20312030 loop do
20322031 case tk
2033- when TkSEMICOLON then
2032+ when TkSEMICOLON , TkNL then
20342033 break if b_nest . zero?
20352034 when TkLPAREN , TkfLPAREN then
20362035 nest += 1
2036+ when TkRPAREN then
2037+ nest -= 1
20372038 when TkBEGIN then
20382039 b_nest += 1
20392040 when TkEND then
20402041 b_nest -= 1
20412042 when TkDO
20422043 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
20502044 when nil then
20512045 break
20522046 end
Original file line number Diff line number Diff line change @@ -2467,6 +2467,38 @@ class DateTime < Date
24672467 assert_equal :private , date_time_now . visibility , date_time_now . full_name
24682468 end
24692469
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+
24702502 def test_parse_require_dynamic_string
24712503 content = <<-RUBY
24722504prefix = 'path'
You can’t perform that action at this time.
0 commit comments