Project

General

Profile

Feature #19083 ยป 0001-Add-node_id_for_backtrace_location-function.patch

eileencodes (Eileen Uchitelle), 10/29/2022 03:23 PM

View differences:

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