diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-13 13:34:30 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-28 16:23:51 +0900 |
| commit | b5e23d3e3b5ff2f5328aa43a2392ebe7c951a222 (patch) | |
| tree | 408005ab7b1b51f2a04bd3a15142361937683208 /test/ruby | |
| parent | ad96962173c824aeb4ecdd1d9a2e98eaa23a7536 (diff) | |
Syntax check of `yield` in the parser
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_ast.rb | 28 | ||||
| -rw-r--r-- | test/ruby/test_rubyoptions.rb | 3 |
2 files changed, 31 insertions, 0 deletions
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb index 70ebd22a98..76fd2b3783 100644 --- a/test/ruby/test_ast.rb +++ b/test/ruby/test_ast.rb @@ -285,6 +285,34 @@ class TestAst < Test::Unit::TestCase assert_parse("begin rescue; END {defined? retry}; end") end + def test_invalid_yield + msg = /Invalid yield/ + assert_invalid_parse(msg, "yield") + assert_invalid_parse(msg, "class C; yield; end") + assert_invalid_parse(msg, "BEGIN {yield}") + assert_invalid_parse(msg, "END {yield}") + + assert_invalid_parse(msg, "yield true") + assert_invalid_parse(msg, "class C; yield true; end") + assert_invalid_parse(msg, "BEGIN {yield true}") + assert_invalid_parse(msg, "END {yield true}") + + assert_parse("!defined?(yield)") + assert_parse("class C; defined?(yield); end") + assert_parse("BEGIN {defined?(yield)}") + assert_parse("END {defined?(yield)}") + + assert_parse("!defined?(yield true)") + assert_parse("class C; defined?(yield true); end") + assert_parse("BEGIN {defined?(yield true)}") + assert_parse("END {defined?(yield true)}") + + assert_parse("!defined? yield") + assert_parse("class C; defined? yield; end") + assert_parse("BEGIN {defined? yield}") + assert_parse("END {defined? yield}") + 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 a2f738d9a5..b2e2e7bb6c 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -373,14 +373,17 @@ class TestRubyOptions < Test::Unit::TestCase assert_in_out_err(%w(-cw -e next), "", [], ["-e:1: Invalid next", :*]) assert_in_out_err(%w(-cw -e redo), "", [], ["-e:1: Invalid redo", :*]) assert_in_out_err(%w(-cw -e retry), "", [], ["-e:1: Invalid retry", :*]) + assert_in_out_err(%w(-cw -e yield), "", [], ["-e:1: Invalid yield", :*]) assert_in_out_err(%w(-cw -e begin -e break -e end), "", [], ["-e:2: Invalid break", :*]) assert_in_out_err(%w(-cw -e begin -e next -e end), "", [], ["-e:2: Invalid next", :*]) assert_in_out_err(%w(-cw -e begin -e redo -e end), "", [], ["-e:2: Invalid redo", :*]) assert_in_out_err(%w(-cw -e begin -e retry -e end), "", [], ["-e:2: Invalid retry", :*]) + assert_in_out_err(%w(-cw -e begin -e yield -e end), "", [], ["-e:2: Invalid yield", :*]) assert_in_out_err(%w(-cw -e !defined?(break)), "", ["Syntax OK"], []) 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(-cw -e !defined?(yield)), "", ["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"], []) |
