diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-11 01:02:34 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-27 21:53:01 +0900 |
| commit | 29e5fca7181de5f0db372374d5f39704f81f2731 (patch) | |
| tree | 1bd3d238ff89ec5c830acb543db80b55060fb53b /test | |
| parent | ff8278e52c08e6b7bc33ba994b996595b1b65833 (diff) | |
Syntax check of `retry` in the parser
Diffstat (limited to 'test')
| -rw-r--r-- | test/ruby/test_ast.rb | 13 | ||||
| -rw-r--r-- | test/ruby/test_rubyoptions.rb | 2 | ||||
| -rw-r--r-- | test/yarp/parse_test.rb | 4 |
3 files changed, 17 insertions, 2 deletions
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb index bb6f98c4a9..8515bc0780 100644 --- a/test/ruby/test_ast.rb +++ b/test/ruby/test_ast.rb @@ -247,6 +247,19 @@ class TestAst < Test::Unit::TestCase end end + def test_invalid_retry + msg = /Invalid retry/ + assert_invalid_parse(msg, "retry") + assert_invalid_parse(msg, "def m; retry; end") + assert_invalid_parse(msg, "begin retry; end") + assert_parse("begin rescue; retry; end") + assert_invalid_parse(msg, "begin rescue; else; retry; end") + assert_invalid_parse(msg, "begin rescue; ensure; retry; end") + assert_parse("nil rescue retry") + assert_invalid_parse(msg, "END {retry}") + assert_invalid_parse(msg, "begin rescue; END {retry}; end") + end + def test_node_id_for_location exception = begin raise diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index fe104ecddc..43c8451235 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -372,9 +372,11 @@ class TestRubyOptions < Test::Unit::TestCase assert_in_out_err(%w(-c -e break), "", [], ["-e:1: Invalid break", :*]) assert_in_out_err(%w(-c -e next), "", [], ["-e:1: Invalid next", :*]) assert_in_out_err(%w(-c -e redo), "", [], ["-e:1: Invalid redo", :*]) + assert_in_out_err(%w(-c -e retry), "", [], ["-e:1: Invalid retry", :*]) assert_in_out_err(%w(-c -e begin -e break -e end), "", [], ["-e:2: Invalid break", :*]) assert_in_out_err(%w(-c -e begin -e next -e end), "", [], ["-e:2: Invalid next", :*]) assert_in_out_err(%w(-c -e begin -e redo -e end), "", [], ["-e:2: Invalid redo", :*]) + assert_in_out_err(%w(-c -e begin -e retry -e end), "", [], ["-e:2: Invalid retry", :*]) end def test_invalid_option diff --git a/test/yarp/parse_test.rb b/test/yarp/parse_test.rb index 0baa099e94..aa3a76ad7c 100644 --- a/test/yarp/parse_test.rb +++ b/test/yarp/parse_test.rb @@ -89,9 +89,9 @@ module YARP src = source case relative - when /break|next|redo|if|unless|rescue|control|keywords/ + when /break|next|redo|if|unless|rescue|control|keywords|retry/ # Uncaught syntax errors: Invalid break, Invalid next - src = "->{\n#{src}\n}" + src = "->do\nrescue\n#{src}\nend" ripper_should_match = false end |
