From 6a9ce1fea89bc5c6518dd6bb7ff3b824a9321976 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Fri, 19 Apr 2019 22:19:41 +0900 Subject: Support **nil syntax for specifying a method does not accept keyword arguments This syntax means the method should be treated as a method that uses keyword arguments, but no specific keyword arguments are supported, and therefore calling the method with keyword arguments will raise an ArgumentError. It is still allowed to double splat an empty hash when calling the method, as that does not pass any keyword arguments. --- test/ruby/test_syntax.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test/ruby/test_syntax.rb') diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 02a95bc60b..72a3cc2fc7 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -249,6 +249,22 @@ class TestSyntax < Test::Unit::TestCase assert_syntax_error('def o.foo(@@foo: a) end', /class variable/) end + def test_keywords_specified_and_not_accepted + assert_syntax_error('def o.foo(a:, **nil) end', /unexpected/) + assert_syntax_error('def o.foo(a:, **nil, &b) end', /unexpected/) + assert_syntax_error('def o.foo(**a, **nil) end', /unexpected/) + assert_syntax_error('def o.foo(**a, **nil, &b) end', /unexpected/) + assert_syntax_error('def o.foo(**nil, **a) end', /unexpected/) + assert_syntax_error('def o.foo(**nil, **a, &b) end', /unexpected/) + + assert_syntax_error('proc do |a:, **nil| end', /unexpected/) + assert_syntax_error('proc do |a:, **nil, &b| end', /unexpected/) + assert_syntax_error('proc do |**a, **nil| end', /unexpected/) + assert_syntax_error('proc do |**a, **nil, &b| end', /unexpected/) + assert_syntax_error('proc do |**nil, **a| end', /unexpected/) + assert_syntax_error('proc do |**nil, **a, &b| end', /unexpected/) + end + def test_optional_self_reference bug9593 = '[ruby-core:61299] [Bug #9593]' o = Object.new -- cgit v1.2.3