Bug #11809 ยป never_refine_method_missing.diff
test/ruby/test_refinement.rb | ||
---|---|---|
assert_equal([:R2_baz, [:R1_foo, :orig_foo]], MixedUsing2.f2)
|
||
end
|
||
module MethodMissing
|
||
class Foo
|
||
end
|
||
module Bar
|
||
refine Foo do
|
||
def method_missing(mid, *args)
|
||
"method_missing refined"
|
||
end
|
||
end
|
||
end
|
||
using Bar
|
||
def self.call_undefined_method
|
||
Foo.new.foo
|
||
end
|
||
end
|
||
def test_method_missing
|
||
assert_raise(NoMethodError) do
|
||
MethodMissing.call_undefined_method
|
||
end
|
||
end
|
||
private
|
||
def eval_using(mod, s)
|
vm_insnhelper.c | ||
---|---|---|
ci = &ci_entry;
|
||
cc_entry = *orig_cc;
|
||
cc_entry.me = rb_callable_method_entry(CLASS_OF(calling->recv), idMethodMissing);
|
||
cc_entry.me =
|
||
rb_callable_method_entry_without_refinements(CLASS_OF(calling->recv),
|
||
idMethodMissing);
|
||
cc = &cc_entry;
|
||
calling->argc = argc;
|