Skip to content

Commit

Permalink
* object.c: Add NilClass#to_h [Feature ruby#6276]
Browse files Browse the repository at this point in the history
  [ref ruby#5008] [rubyspec:dc5ecddbd608]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
marcandre committed Apr 16, 2012
1 parent f92be2c commit 33399fe
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ with all sufficient information, see the ChangeLog file.
* added LoadError#path method to return the file name that could not be
loaded.

* NilClass
* added method:
* added nil.to_h which returns {}

* Signal
* incompatible changes:
* Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
Expand Down
18 changes: 18 additions & 0 deletions object.c
Original file line number Diff line number Diff line change
Expand Up @@ -1057,6 +1057,23 @@ nil_to_a(VALUE obj)
return rb_ary_new2(0);
}

/*
* Document-method: to_h
*
* call-seq:
* nil.to_h -> {}
*
* Always returns an empty hash.
*
* nil.to_h #=> {}
*/

static VALUE
nil_to_h(VALUE obj)
{
return rb_hash_new();
}

/*
* call-seq:
* nil.inspect -> "nil"
Expand Down Expand Up @@ -2896,6 +2913,7 @@ Init_Object(void)
rb_define_method(rb_cNilClass, "to_f", nil_to_f, 0);
rb_define_method(rb_cNilClass, "to_s", nil_to_s, 0);
rb_define_method(rb_cNilClass, "to_a", nil_to_a, 0);
rb_define_method(rb_cNilClass, "to_h", nil_to_h, 0);
rb_define_method(rb_cNilClass, "inspect", nil_inspect, 0);
rb_define_method(rb_cNilClass, "&", false_and, 1);
rb_define_method(rb_cNilClass, "|", false_or, 1);
Expand Down

0 comments on commit 33399fe

Please sign in to comment.