diff --git a/ChangeLog b/ChangeLog index 1c342313d5..c9ddbf848c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Fri Aug 2 23:57:57 2013 NAKAMURA Usaku + + * vm.c (m_core_define_method, m_core_define_singleton_method): now + the value of def-expr is the Symbol of the name of the method, not + nil. + ref. [ruby-dev:42151] [Feature #3753] + + * test/ruby/test_syntax.rb (TestSyntax#test_value_of_def): test for + above changes. + Fri Aug 2 23:54:11 2013 Masaki Matsushita * array.c (rb_ary_zip): performance improvement by avoiding diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 9daa0e4d49..99470691ef 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -370,6 +370,13 @@ eom end end + def test_value_of_def + assert_separately [], <<-EOS + assert_equal(:foo, (def foo; end)) + assert_equal(:foo, (def (Object.new).foo; end)) + EOS + end + private def not_label(x) @result = x; @not_label ||= nil end diff --git a/vm.c b/vm.c index 8e01a17dc1..3150ee8ac6 100644 --- a/vm.c +++ b/vm.c @@ -2052,7 +2052,7 @@ m_core_define_method(VALUE self, VALUE cbase, VALUE sym, VALUE iseqval) REWIND_CFP({ vm_define_method(GET_THREAD(), cbase, SYM2ID(sym), iseqval, 0, rb_vm_cref()); }); - return Qnil; + return sym; } static VALUE @@ -2061,7 +2061,7 @@ m_core_define_singleton_method(VALUE self, VALUE cbase, VALUE sym, VALUE iseqval REWIND_CFP({ vm_define_method(GET_THREAD(), cbase, SYM2ID(sym), iseqval, 1, rb_vm_cref()); }); - return Qnil; + return sym; } static VALUE