Skip to content

Commit

Permalink
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions core/src/main/java/org/jruby/RubyModule.java
Original file line number Diff line number Diff line change
@@ -1909,17 +1909,14 @@ public IRubyObject newMethod(IRubyObject receiver, final String methodName, bool

@JRubyMethod(name = "define_method", visibility = PRIVATE, reads = VISIBILITY)
public IRubyObject define_method(ThreadContext context, IRubyObject arg0, Block block) {
Visibility visibility = getVisibilityForDefineMethod(context);
Visibility visibility = getCurrentVisibilityForDefineMethod(context);

return defineMethodFromBlock(context, arg0, block, visibility);
}

private Visibility getVisibilityForDefineMethod(ThreadContext context) {
Visibility visibility = PUBLIC;

private Visibility getCurrentVisibilityForDefineMethod(ThreadContext context) {
// These checks are similar to rb_vm_cref_in_context from MRI.
if (context.getCurrentFrame().getSelf() == this) visibility = context.getCurrentVisibility();
return visibility;
return context.getCurrentFrame().getSelf() == this ? context.getCurrentVisibility() : PUBLIC;
}

public IRubyObject defineMethodFromBlock(ThreadContext context, IRubyObject arg0, Block block, Visibility visibility) {
@@ -1963,7 +1960,7 @@ public IRubyObject defineMethodFromBlock(ThreadContext context, IRubyObject arg0

@JRubyMethod(name = "define_method", visibility = PRIVATE, reads = VISIBILITY)
public IRubyObject define_method(ThreadContext context, IRubyObject arg0, IRubyObject arg1, Block block) {
Visibility visibility = getVisibilityForDefineMethod(context);
Visibility visibility = getCurrentVisibilityForDefineMethod(context);

return defineMethodFromCallable(context, arg0, arg1, visibility);
}

0 comments on commit fd0a001

Please sign in to comment.