Bug #4583 » eval.diff
| eval.c | ||
|---|---|---|
|
if (argc != 0) {
|
||
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
|
||
|
}
|
||
|
if (event_hooks) {
|
||
|
EXEC_EVENT_HOOK(RUBY_EVENT_C_CALL, ruby_current_node, recv, id, klass);
|
||
|
}
|
||
|
result = rb_attr_get(recv, body->nd_vid);
|
||
|
if (event_hooks) {
|
||
|
EXEC_EVENT_HOOK(RUBY_EVENT_C_RETURN, ruby_current_node, recv, id, klass);
|
||
|
}
|
||
|
break;
|
||
|
case NODE_ATTRSET:
|
||
|
if (argc != 1)
|
||
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
||
|
if (event_hooks) {
|
||
|
EXEC_EVENT_HOOK(RUBY_EVENT_C_CALL, ruby_current_node, recv, id, klass);
|
||
|
}
|
||
|
result = rb_ivar_set(recv, body->nd_vid, argv[0]);
|
||
|
if (event_hooks) {
|
||
|
EXEC_EVENT_HOOK(RUBY_EVENT_C_RETURN, ruby_current_node, recv, id, klass);
|
||
|
}
|
||
|
break;
|
||
|
case NODE_ZSUPER:
|
||
| test/ruby/test_settracefunc.rb | ||
|---|---|---|
|
assert_equal(["c-call", 131, :set_trace_func, Kernel], events.shift)
|
||
|
assert_equal([], events)
|
||
|
end
|
||
|
attr_accessor :baz
|
||
|
def test_attr_accessor
|
||
|
events = []
|
||
|
set_trace_func(Proc.new { |event, file, lineno, mid, bidning, klass|
|
||
|
events << [event, lineno, mid, klass]
|
||
|
})
|
||
|
self.baz = baz
|
||
|
set_trace_func nil
|
||
|
assert_equal(["line", 146, :test_attr_accessor, TestSetTraceFunc],
|
||
|
events.shift) # baz = baz
|
||
|
assert_equal(["c-call", 146, :baz, TestSetTraceFunc],
|
||
|
events.shift) # baz = baz
|
||
|
assert_equal(["c-return", 146, :baz, TestSetTraceFunc],
|
||
|
events.shift) # baz = baz
|
||
|
assert_equal(["c-call", 146, :baz=, TestSetTraceFunc],
|
||
|
events.shift) # baz = baz
|
||
|
assert_equal(["c-return", 146, :baz=, TestSetTraceFunc],
|
||
|
events.shift) # baz = baz
|
||
|
assert_equal(["line", 147, :test_attr_accessor, TestSetTraceFunc],
|
||
|
events.shift) # baz = baz
|
||
|
assert_equal(["c-call", 147, :set_trace_func, Kernel], events.shift)
|
||
|
assert_equal([], events)
|
||
|
end
|
||
|
end
|
||