diff options
-rw-r--r-- | struct.c | 2 | ||||
-rw-r--r-- | test/ruby/test_struct.rb | 1 |
2 files changed, 2 insertions, 1 deletions
@@ -633,7 +633,7 @@ rb_struct_initialize_m(int argc, const VALUE *argv, VALUE self) n = num_members(klass); if (argc > 0 && RTEST(rb_struct_s_keyword_init(klass))) { struct struct_hash_set_arg arg; - if (argc > 2 || !RB_TYPE_P(argv[0], T_HASH)) { + if (argc > 1 || !RB_TYPE_P(argv[0], T_HASH)) { rb_raise(rb_eArgError, "wrong number of arguments (given %d, expected 0)", argc); } rb_mem_clear((VALUE *)RSTRUCT_CONST_PTR(self), n); diff --git a/test/ruby/test_struct.rb b/test/ruby/test_struct.rb index ec7728b197..22a6ce8241 100644 --- a/test/ruby/test_struct.rb +++ b/test/ruby/test_struct.rb @@ -105,6 +105,7 @@ module TestStruct @Struct.new("KeywordInitFalse", :a, :b, keyword_init: false) assert_raise(ArgumentError) { @Struct::KeywordInitTrue.new(1, 2) } + assert_raise(ArgumentError) { @Struct::KeywordInitTrue.new({a: 100}, 2) } assert_nothing_raised { @Struct::KeywordInitFalse.new(1, 2) } assert_nothing_raised { @Struct::KeywordInitTrue.new(a: 1, b: 2) } assert_raise(ArgumentError) { @Struct::KeywordInitTrue.new(1, b: 2) } |