Feature #19083 ยป 0001-Add-node_id_for_backtrace_location-function.patch
ast.c | ||
---|---|---|
return lines;
|
||
}
|
||
static VALUE
|
||
node_id_for_backtrace_location(rb_execution_context_t *ec, VALUE module, VALUE location)
|
||
{
|
||
int node_id;
|
||
node_id = rb_get_node_id_from_frame_info(location);
|
||
if (node_id == -1) {
|
||
return Qnil;
|
||
}
|
||
return INT2NUM(node_id);
|
||
}
|
||
static VALUE
|
||
ast_s_of(rb_execution_context_t *ec, VALUE module, VALUE body, VALUE keep_script_lines, VALUE error_tolerant)
|
||
{
|
ast.rb | ||
---|---|---|
Primitive.ast_s_of body, keep_script_lines, error_tolerant
|
||
end
|
||
# call-seq:
|
||
# RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(backtrace_location) -> integer
|
||
#
|
||
# Returns the node id for the given backtrace location.
|
||
#
|
||
# begin
|
||
# raise
|
||
# rescue => e
|
||
# loc = e.backtrace_locations.first
|
||
# RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc)
|
||
# end # => 0
|
||
def self.node_id_for_backtrace_location backtrace_location
|
||
Primitive.node_id_for_backtrace_location backtrace_location
|
||
end
|
||
# RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
|
||
# RubyVM::AbstractSyntaxTree.
|
||
#
|
test/ruby/test_ast.rb | ||
---|---|---|
end
|
||
end
|
||
def test_node_id_for_location
|
||
exception = begin
|
||
raise
|
||
rescue => e
|
||
e
|
||
end
|
||
loc = exception.backtrace_locations.first
|
||
node_id = RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc)
|
||
node = RubyVM::AbstractSyntaxTree.of(loc, keep_script_lines: true)
|
||
assert_equal node.node_id, node_id
|
||
end
|
||
def test_of_proc_and_method
|
||
proc = Proc.new { 1 + 2 }
|
||
method = self.method(__method__)
|