mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Fixed class method visibility via module_function
The following code should work
```ruby
module M
def me
p self
end
module_function :me
end
M.me
```
This commit is contained in:
+1
-1
@@ -2789,7 +2789,7 @@ mrb_mod_module_function(mrb_state *mrb, mrb_value mod)
|
||||
mrb_method_t m = mrb_method_search(mrb, rclass, mid);
|
||||
|
||||
prepare_singleton_class(mrb, (struct RBasic*)rclass);
|
||||
MRB_METHOD_SET_VISIBILITY(m, MT_PRIVATE);
|
||||
MRB_METHOD_SET_VISIBILITY(m, MT_PUBLIC);
|
||||
mrb_define_method_raw(mrb, rclass->c, mid, m);
|
||||
mrb_gc_arena_restore(mrb, ai);
|
||||
}
|
||||
|
||||
@@ -838,6 +838,9 @@ assert('Module#module_function') do
|
||||
end
|
||||
|
||||
assert_true M.respond_to?(:modfunc)
|
||||
assert_equal nil do
|
||||
M.modfunc
|
||||
end
|
||||
end
|
||||
|
||||
assert('module with non-class/module outer raises TypeError') do
|
||||
|
||||
Reference in New Issue
Block a user