Modify to get constant of parent module in singleton class; fix
MODIFY
src/variable.c
src/variable.c
@@ -949,7 +949,7 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym)
klass = mrb_obj_iv_get(mrb, (struct RObject *)c,
mrb_intern_lit(mrb, "__attached__"));
c2 = mrb_class_ptr(klass);
- if (c2->tt == MRB_TT_CLASS)
+ if (c2->tt == MRB_TT_CLASS || c2->tt == MRB_TT_MODULE)
c = c2;
}
c2 = c;

MODIFY
test/t/module.rb
test/t/module.rb
@@ -849,3 +849,14 @@ assert('module with non-class/module outer raises TypeError') do
assert_raise(TypeError) { module 0::M1 end }
assert_raise(TypeError) { module []::M2 end }
end
+
+assert('get constant of parent module in singleton class; issue #3568') do
+ actual = module GetConstantInSingletonTest
+ EXPECTED = "value"
+ class << self
+ EXPECTED
+ end
+ end
+
+ assert_equal("value", actual)
+end

Modify to get constant of parent module in singleton class; fix #3568