Project

General

Profile

Bug #4583 » eval.diff

trace events to attr_* generated methods. includes test - QaDeS (Michael Klaus), 04/17/2011 04:17 PM

View differences:

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
(1-1/5)