diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-10-12 00:26:39 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-10-12 00:40:55 +0900 |
commit | 4ed0c33d13ff0d2544aaf36e8e4f071b900d10cd (patch) | |
tree | de93b6343b6f4b7f7b17483018f0be5000d8db5e /test/ripper | |
parent | 27b48089e2bdc3b0719e75ae8685a496ef8fa9e3 (diff) | |
download | ruby-4ed0c33d13ff0d2544aaf36e8e4f071b900d10cd.tar.gz |
Prohibit setter method names in all kinds of endless methods
Also unwrap NODE_RIPPER to check the method name.
Diffstat (limited to 'test/ripper')
-rw-r--r-- | test/ripper/test_parser_events.rb | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index 13064c2bc8..4e1d233851 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -660,11 +660,30 @@ class TestRipper::ParserEvents < Test::Unit::TestCase } assert_equal true, thru_def assert_equal '[def(foo,[],bodystmt([void()]))]', parse('def foo ;end') + end - thru_def = false - tree = parse('def foo() = 42', :on_def) {thru_def = true} - assert_equal true, thru_def + def test_endless_def + events = %i[on_def on_parse_error] + thru = nil + hook = ->(name, *) {thru[name] = true} + + thru = {} + tree = parse('def foo() = 42', events, &hook) + assert_equal({on_def: true}, thru) assert_equal '[def(foo,[],42)]', tree + + thru = {} + tree = parse('def foo() = 42 rescue 0', events, &hook) + assert_equal({on_def: true}, thru) + assert_equal '[def(foo,[],rescue_mod(42,0))]', tree + + thru = {} + tree = parse('def foo=() = 42', events, &hook) + assert_equal({on_def: true, on_parse_error: true}, thru) + + thru = {} + tree = parse('def foo=() = 42 rescue 0', events, &hook) + assert_equal({on_def: true, on_parse_error: true}, thru) end def test_defined @@ -682,11 +701,30 @@ class TestRipper::ParserEvents < Test::Unit::TestCase thru_parse_error = false tree = parse('def foo&.bar; end', :on_parse_error) {thru_parse_error = true} assert_equal(true, thru_parse_error) + end - thru_defs = false - tree = parse('def foo.bar() = 42', :on_defs) {thru_defs = true} - assert_equal true, thru_defs + def test_endless_defs + events = %i[on_defs on_parse_error] + thru = nil + hook = ->(name, *) {thru[name] = true} + + thru = {} + tree = parse('def foo.bar() = 42', events, &hook) + assert_equal({on_defs: true}, thru) assert_equal '[defs(vcall(foo),.,bar,[],42)]', tree + + thru = {} + tree = parse('def foo.bar() = 42 rescue 0', events, &hook) + assert_equal({on_defs: true}, thru) + assert_equal '[defs(vcall(foo),.,bar,[],rescue_mod(42,0))]', tree + + thru = {} + tree = parse('def foo.bar=() = 42', events, &hook) + assert_equal({on_defs: true, on_parse_error: true}, thru) + + thru = {} + tree = parse('def foo.bar=() = 42 rescue 0', events, &hook) + assert_equal({on_defs: true, on_parse_error: true}, thru) end def test_do_block |