diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-02 08:30:56 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-02 08:30:56 +0000 |
commit | b996367eb50402cfb343e671a2ea2cf1450a8ec4 (patch) | |
tree | b18ee48cd12d429ba0e9d2672d020da9acd9a6f0 | |
parent | 31457774a88cae0fcf95d1e2ca517b6c2e8f91ee (diff) |
variable.c: move warnings to rb_ivar_get
* variable.c (generic_ivar_get, ivar_get): return undef value instead
of Qnil with warnings, for uninitialized instance variable.
* variable.c (rb_ivar_get): warn for uninitialized instance variable
here.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | variable.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/variable.c b/variable.c index 1417de0ed3..2c7a0b5d63 100644 --- a/variable.c +++ b/variable.c @@ -908,7 +908,7 @@ rb_generic_ivar_table(VALUE obj) } static VALUE -generic_ivar_get(VALUE obj, ID id, int warn) +generic_ivar_get(VALUE obj, ID id, VALUE undef) { st_data_t tbl, val; @@ -919,10 +919,7 @@ generic_ivar_get(VALUE obj, ID id, int warn) } } } - if (warn) { - rb_warning("instance variable %"PRIsVALUE" not initialized", QUOTE_ID(id)); - } - return Qnil; + return undef; } static void @@ -1071,7 +1068,7 @@ rb_copy_generic_ivar(VALUE clone, VALUE obj) } static VALUE -ivar_get(VALUE obj, ID id, int warn) +rb_ivar_lookup(VALUE obj, ID id, VALUE undef) { VALUE val, *ptr; struct st_table *iv_index_tbl; @@ -1099,25 +1096,28 @@ ivar_get(VALUE obj, ID id, int warn) default: generic: if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) - return generic_ivar_get(obj, id, warn); + return generic_ivar_get(obj, id, undef); break; } - if (warn) { - rb_warning("instance variable %"PRIsVALUE" not initialized", QUOTE_ID(id)); - } - return Qnil; + return undef; } VALUE rb_ivar_get(VALUE obj, ID id) { - return ivar_get(obj, id, TRUE); + VALUE iv = rb_ivar_lookup(obj, id, Qundef); + + if (iv == Qundef) { + rb_warning("instance variable %"PRIsVALUE" not initialized", QUOTE_ID(id)); + iv = Qnil; + } + return iv; } VALUE rb_attr_get(VALUE obj, ID id) { - return ivar_get(obj, id, FALSE); + return rb_ivar_lookup(obj, id, Qnil); } VALUE |