Issue #12747 has been updated by Koichi Sasada.


Sorry for late response.

I missed incompatibility.
How about to commit it before next preview and ask feedback from users?

Thansk,
Koichi

----------------------------------------
Feature #12747: Add TracePoint#callee_id
https://bugs.ruby-lang.org/issues/12747#change-61191

* Author: Kazuki Tsujimoto
* Status: Assigned
* Priority: Normal
* Assignee: Koichi Sasada
----------------------------------------
# Abstract 
I propose to add TracePoint#callee_id which returns the called name of the method.

~~~ruby
def m
end
alias am m

TracePoint.new(:call) do |tp|
  p [tp.method_id, tp.callee_id] #=> [:m, :am]
end.enable do
  am
end
~~~


# Background
We can get callee id  by `tp.binding.eval('__callee__'))`,
but it is slow(10x~) and can't get callee id of CFUNC.

~~~
class Object
  alias aitself itself
end

TracePoint.new(:c_call) do |tp|
  p [tp.method_id, tp.binding.eval('__callee__')] #=> [:itself, nil]
end.enable do
  aitself
end
~~~~


# Implementation
I attached 2 patches.

* 0001-TracePoint-method_id-should-return-method_id-not-cal.patch
   * Now, TracePoint#method_id returns not only method id(`__method__`) but callee id. 
     This patch makes TracePoint#method_id return method id always, so it introduces some incompatibility.
* 0002-Add-TracePoint-callee_id.patch
   * Add TracePoint#callee_id.


# Usecase
power_assert gem wants this method to get column number of each method calls.


---Files--------------------------------
0001-TracePoint-method_id-should-return-method_id-not-cal.patch (9.76 KB)
0002-Add-TracePoint-callee_id.patch (19.4 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>