diff options
author | Shugo Maeda <[email protected]> | 2021-08-20 10:42:01 +0900 |
---|---|---|
committer | Shugo Maeda <[email protected]> | 2021-08-20 10:42:01 +0900 |
commit | 754adbee91c2d4a4e84e9271724ca33f630d1916 () | |
tree | d9966836716bf62947f861a388186f0158bcaebe | |
parent | 70510d1545da64604de148898e16459fad2041fe (diff) |
Module#ancestors should not return superclasses of refinements
[ruby-core:86949] [Bug #14744] Reported by Eregon (Benoit Daloze). Thanks!
-rw-r--r-- | class.c | 5 | ||||
-rw-r--r-- | test/ruby/test_refinement.rb | 12 |
2 files changed, 17 insertions, 0 deletions
@@ -1347,8 +1347,13 @@ VALUE rb_mod_ancestors(VALUE mod) { VALUE p, ary = rb_ary_new(); for (p = mod; p; p = RCLASS_SUPER(p)) { if (p != RCLASS_ORIGIN(p)) continue; if (BUILTIN_TYPE(p) == T_ICLASS) { rb_ary_push(ary, RBASIC(p)->klass); @@ -2559,6 +2559,18 @@ class TestRefinement < Test::Unit::TestCase assert_equal(:refined, Bug17822::Client.call_foo) end private def eval_using(mod, s) |