diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-07-15 21:33:39 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-07-15 22:24:02 +0900 |
commit | 3e7a7fb28a9a6a9544e1e49dfab51122ccfdac3f (patch) | |
tree | a023f7b9c88fbd3e7ae13a9c8b7cc124a2e19ec8 | |
parent | 33bea3bdff3b91b3373a85a5c077361073b127d8 (diff) | |
download | ruby-3e7a7fb28a9a6a9544e1e49dfab51122ccfdac3f.tar.gz |
Make Struct#keyword_init? return nil by default [Feature #18008]
-rw-r--r-- | struct.c | 15 | ||||
-rw-r--r-- | test/ruby/test_struct.rb | 3 |
2 files changed, 8 insertions, 10 deletions
@@ -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) diff --git a/test/ruby/test_struct.rb b/test/ruby/test_struct.rb index 000d229e17..19577266c7 100644 --- a/test/ruby/test_struct.rb +++ b/test/ruby/test_struct.rb @@ -144,6 +144,9 @@ module TestStruct 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 |