summaryrefslogtreecommitdiff
path: root/class.c
diff options
Diffstat (limited to 'class.c')
-rw-r--r--class.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/class.c b/class.c
index 41dbcf5150..9e5cf5416f 100644
--- a/class.c
+++ b/class.c
@@ -1347,8 +1347,13 @@ VALUE
rb_mod_ancestors(VALUE mod)
{
VALUE p, ary = rb_ary_new();
+ VALUE refined_class = Qnil;
+ if (FL_TEST(mod, RMODULE_IS_REFINEMENT)) {
+ refined_class = rb_refinement_module_get_refined_class(mod);
+ }
for (p = mod; p; p = RCLASS_SUPER(p)) {
+ if (p == refined_class) break;
if (p != RCLASS_ORIGIN(p)) continue;
if (BUILTIN_TYPE(p) == T_ICLASS) {
rb_ary_push(ary, RBASIC(p)->klass);