diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2019-10-29 20:08:01 -0400 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-10-31 00:37:53 +0900 |
commit | 4c7f789e942e78ebd3a7e3bf458c6cbe2133d692 (patch) | |
tree | 8affdffdba75380c3e032bbb4be12bbe42f2fb78 /struct.c | |
parent | 6c3ed0d71cb1b59be5b2fbc886b5dd962ab74d35 (diff) |
Allow only one argument for keyword_init struct
```
irb(main):001:0> RUBY_VERSION
=> "2.6.5"
irb(main):002:0> S = Struct.new(:foo, keyword_init: true)
=> S(keyword_init: true)
irb(main):003:0> S.new({foo: 23424}, 234) # I don't think this is intentional
=> #<struct S foo=23424>
irb(main):004:0>
```
Tightening this up should inform users when they are confused about
whether a struct is `keyword_init`.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2634
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 2 |
1 files changed, 1 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); |