summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-09-11 01:02:34 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-09-27 21:53:01 +0900
commit29e5fca7181de5f0db372374d5f39704f81f2731 (patch)
tree1bd3d238ff89ec5c830acb543db80b55060fb53b /test
parentff8278e52c08e6b7bc33ba994b996595b1b65833 (diff)
Syntax check of `retry` in the parser
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_ast.rb13
-rw-r--r--test/ruby/test_rubyoptions.rb2
-rw-r--r--test/yarp/parse_test.rb4
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