diff options
| author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-29 12:11:41 +0000 |
|---|---|---|
| committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-29 12:11:41 +0000 |
| commit | 2110125b43fca50e532c27a009362009f8522663 (patch) | |
| tree | 461c14a8e6ab18c965d4d5a59f462d8617a46f67 | |
| parent | 0e0e4cb4ccf6d26c96165e678f3d52c24796662c (diff) | |
merge revision(s) 53485: [Backport #11976]
* symbol.h (is_attrset_id): ASET is an attrset ID. fix
unexpected safe call instead of an ordinary ASET.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | symbol.h | 2 | ||||
| -rw-r--r-- | test/ruby/test_call.rb | 7 | ||||
| -rw-r--r-- | version.h | 2 |
4 files changed, 14 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Tue Mar 29 21:03:40 2016 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * symbol.h (is_attrset_id): ASET is an attrset ID. fix + unexpected safe call instead of an ordinary ASET. + Tue Mar 29 21:01:07 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org> * doc/syntax/calling_methods.rdoc: fix old operator for safe navigation @@ -36,7 +36,7 @@ struct RSymbol { #define is_local_id(id) (id_type(id)==ID_LOCAL) #define is_global_id(id) (id_type(id)==ID_GLOBAL) #define is_instance_id(id) (id_type(id)==ID_INSTANCE) -#define is_attrset_id(id) (id_type(id)==ID_ATTRSET) +#define is_attrset_id(id) ((id)==idASET||id_type(id)==ID_ATTRSET) #define is_const_id(id) (id_type(id)==ID_CONST) #define is_class_id(id) (id_type(id)==ID_CLASS) #define is_junk_id(id) (id_type(id)==ID_JUNK) diff --git a/test/ruby/test_call.rb b/test/ruby/test_call.rb index 7ef8d06936..fb79eadb64 100644 --- a/test/ruby/test_call.rb +++ b/test/ruby/test_call.rb @@ -83,4 +83,11 @@ class TestCall < Test::Unit::TestCase def test_safe_call_block_call_command assert_nil(("a".sub! "b" do end&.foo 1 do end)) end + + def test_invalid_safe_call + h = nil + assert_raise(NoMethodError) { + h[:foo] = nil + } + end end @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.3.0" #define RUBY_RELEASE_DATE "2016-03-29" -#define RUBY_PATCHLEVEL 46 +#define RUBY_PATCHLEVEL 47 #define RUBY_RELEASE_YEAR 2016 #define RUBY_RELEASE_MONTH 3 |
