diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-28 14:30:30 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-28 15:12:27 +0900 |
commit | ad96962173c824aeb4ecdd1d9a2e98eaa23a7536 (patch) | |
tree | 83bf4aff1f4cce5a4e55740133faa45d7690e814 | |
parent | a790f83bac86f160087f1b21c181a9fe60ecefe8 (diff) | |
download | ruby-ad96962173c824aeb4ecdd1d9a2e98eaa23a7536.tar.gz |
Jumps are possible in the top-level loop
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ruby/test_rubyoptions.rb | 3 |
2 files changed, 5 insertions, 1 deletions
@@ -2037,7 +2037,8 @@ static int looking_at_eol_p(struct parser_params *p); program : { SET_LEX_STATE(EXPR_BEG); local_push(p, ifndef_ripper(1)+0); - init_block_exit(p); + /* jumps are possible in the top-level loop. */ + if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p); } top_compstmt { diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index 572f26dcb7..a2f738d9a5 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -381,6 +381,9 @@ class TestRubyOptions < Test::Unit::TestCase assert_in_out_err(%w(-cw -e !defined?(next)), "", ["Syntax OK"], []) assert_in_out_err(%w(-cw -e !defined?(redo)), "", ["Syntax OK"], []) assert_in_out_err(%w(-cw -e !defined?(retry)), "", ["Syntax OK"], []) + assert_in_out_err(%w(-n -cw -e break), "", ["Syntax OK"], []) + assert_in_out_err(%w(-n -cw -e next), "", ["Syntax OK"], []) + assert_in_out_err(%w(-n -cw -e redo), "", ["Syntax OK"], []) end def test_invalid_option |