summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-15 21:33:39 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-15 22:24:02 +0900
commit3e7a7fb28a9a6a9544e1e49dfab51122ccfdac3f (patch)
treea023f7b9c88fbd3e7ae13a9c8b7cc124a2e19ec8
parent33bea3bdff3b91b3373a85a5c077361073b127d8 (diff)
downloadruby-3e7a7fb28a9a6a9544e1e49dfab51122ccfdac3f.tar.gz
Make Struct#keyword_init? return nil by default [Feature #18008]
-rw-r--r--struct.c15
-rw-r--r--test/ruby/test_struct.rb3
2 files changed, 8 insertions, 10 deletions
diff --git a/struct.c b/struct.c
index 1284fd4aa2..9207c6291d 100644
--- a/struct.c
+++ b/struct.c
@@ -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