Skip to content

Commit

Permalink
Make Struct#keyword_init? return nil by default [Feature #18008]
Browse files Browse the repository at this point in the history
  • Loading branch information
nobu committed Jul 15, 2021
1 parent 33bea3b commit 3e7a7fb
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 10 deletions.
15 changes: 5 additions & 10 deletions struct.c
Expand Up @@ -356,19 +356,14 @@ rb_struct_s_inspect(VALUE klass)
*
* Examples:
* Foo = Struct.new(:a)
* Foo.keyword_init? # => false
* Foo.keyword_init? # => nil
* Bar = Struct.new(:a, keyword_init: true)
* Bar.keyword_init? # => true
* Baz = Struct.new(:a, keyword_init: false)
* Baz.keyword_init? # => false
*/
static VALUE
rb_struct_s_keyword_init_p(VALUE klass)
{
if (RTEST(rb_struct_s_keyword_init(klass))) {
return Qtrue;
} else {
return Qfalse;
}
}

#define rb_struct_s_keyword_init_p rb_struct_s_keyword_init

static VALUE
setup_struct(VALUE nstr, VALUE members)
Expand Down
3 changes: 3 additions & 0 deletions test/ruby/test_struct.rb
Expand Up @@ -144,6 +144,9 @@ def test_struct_keyword_init_p

struct = @Struct.new(:a, :b, keyword_init: false)
assert_equal(false, struct.keyword_init?)

struct = @Struct.new(:a, :b)
assert_nil(struct.keyword_init?)
end

def test_initialize
Expand Down

0 comments on commit 3e7a7fb

Please sign in to comment.