Project

General

Profile

Actions

Feature #14694

closed

TracePoint#parameters

Added by mame (Yusuke Endoh) almost 4 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:86567]

Description

Currently, we cannot get the block parameters' information in TracePoint b_call hooks.
Also, it is (possible but) not easy to get the method parameters in call hooks.

[1] https://speakerdeck.com/valich/automated-type-contracts-generation-1#29

To make it easy, how about adding TracePoint#parameters?

TracePoint.new(:call, :b_call, :c_call) do |tp|
  p [tp.event, tp.parameters]
end

# call
def foo(a, b=1); end; foo(1)
#=> [:call, [[:req, :a], [:opt, :b]]]

# b_call
1.times {|x, y=1| }
#=> [:b_call, [[:req, :x], [:opt, :y]]]

# c_call
"".getbyte(0)
#=> [:c_call, [[:req]]]

A patch is attached.


Files

tracepoint-parameters.patch (4.75 KB) tracepoint-parameters.patch mame (Yusuke Endoh), 04/18/2018 02:06 AM
Actions

Also available in: Atom PDF