From 34bc15c86b764e8fdd11d9af8ad3dc401f24b5c4 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 2 Jan 2020 10:06:16 +0900 Subject: [PATCH] Check Module#ruby2_keywords arity It is considered a mistake, because calling this method with no arguments has no effect. --- test/ruby/test_keyword.rb | 6 ++++++ vm_method.c | 1 + 2 files changed, 7 insertions(+) diff --git a/test/ruby/test_keyword.rb b/test/ruby/test_keyword.rb index bbf3953c17..c3a3a450f1 100644 --- a/test/ruby/test_keyword.rb +++ b/test/ruby/test_keyword.rb @@ -2724,6 +2724,12 @@ class TestKeywordArguments < Test::Unit::TestCase end def test_ruby2_keywords + assert_raise(ArgumentError) do + Class.new do + ruby2_keywords + end + end + c = Class.new do ruby2_keywords def foo(meth, *args) send(meth, *args) diff --git a/vm_method.c b/vm_method.c index 4504468789..877198cee1 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1811,6 +1811,7 @@ rb_mod_ruby2_keywords(int argc, VALUE *argv, VALUE module) int i; VALUE origin_class = RCLASS_ORIGIN(module); + rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS); rb_check_frozen(module); for (i = 0; i < argc; i++) {