diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-03-30 21:27:27 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-03-30 21:27:27 +0000 |
commit | c5fe7eb6f688c90208ff95da5bf4e86e54f62edf (patch) | |
tree | 4f033540473fd40695c09facafe1ae444fa69caa | |
parent | b5583577d46e8aa1725840186e0f609cacec1bda (diff) | |
download | ruby-c5fe7eb6f688c90208ff95da5bf4e86e54f62edf.tar.gz |
class.c: suppress wrong warning
* class.c (HAVE_METACLASS_P): should check FL_SINGLTON flag before get
instance variable to get rid of wrong warning about __attached__.
[ruby-core:53839] [Bug #8188]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | class.c | 10 | ||||
-rw-r--r-- | test/ruby/test_eval.rb | 7 |
3 files changed, 22 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Sun Mar 31 06:27:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * class.c (HAVE_METACLASS_P): should check FL_SINGLTON flag before get + instance variable to get rid of wrong warning about __attached__. + [ruby-core:53839] [Bug #8188] + Sat Mar 30 14:11:28 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com> * bcc32: removed. agreed at @@ -307,6 +307,14 @@ rb_singleton_class_attached(VALUE klass, VALUE obj) */ #define META_CLASS_OF_CLASS_CLASS_P(k) (METACLASS_OF(k) == (k)) +/*! + * whether k has a metaclass + * @retval 1 if \a k has a metaclass + * @retval 0 otherwise + */ +#define HAVE_METACLASS_P(k) \ + (FL_TEST(METACLASS_OF(k), FL_SINGLETON) && \ + rb_ivar_get(METACLASS_OF(k), id_attached) == (k)) /*! * ensures \a klass belongs to its own eigenclass. @@ -316,7 +324,7 @@ rb_singleton_class_attached(VALUE klass, VALUE obj) * @note this macro creates a new eigenclass if necessary. */ #define ENSURE_EIGENCLASS(klass) \ - (rb_ivar_get(METACLASS_OF(klass), id_attached) == (klass) ? METACLASS_OF(klass) : make_metaclass(klass)) + (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass)) /*! diff --git a/test/ruby/test_eval.rb b/test/ruby/test_eval.rb index 580d3e88b1..a97b982246 100644 --- a/test/ruby/test_eval.rb +++ b/test/ruby/test_eval.rb @@ -215,6 +215,13 @@ class TestEval < Test::Unit::TestCase end end + def test_instance_eval_on_argf_singleton_class + bug8188 = '[ruby-core:53839] [Bug #8188]' + assert_warning('', bug8188) do + ARGF.singleton_class.instance_eval{} + end + end + class Foo Bar = 2 end |