From ed8e265d4be53e15bffea3b1db649b1cea4ea864 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Mon, 21 Jun 2021 21:15:25 +0900 Subject: Experimentally expose RubyVM::AST::Node#node_id Now ISeq#to_a includes the node_id list for each bytecode instruction. I want a way to retrieve the AST::Node instance corresponding to an instruction for a research purpose including TypeProf-based LSP server. --- ast.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'ast.c') diff --git a/ast.c b/ast.c index 3945a32af7..32d8ab9eb6 100644 --- a/ast.c +++ b/ast.c @@ -254,16 +254,14 @@ ast_node_type(rb_execution_context_t *ec, VALUE self) return rb_sym_intern_ascii_cstr(node_type_to_str(data->node)); } -#ifdef DEBUG_ISEQ_NODE_ID static VALUE -ast_node_node_id(VALUE self) +ast_node_node_id(rb_execution_context_t *ec, VALUE self) { struct ASTNodeData *data; TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data); return INT2FIX(nd_node_id(data->node)); } -#endif #define NEW_CHILD(ast, node) node ? ast_new_internal(ast, node) : Qnil @@ -725,7 +723,4 @@ Init_ast(void) rb_mAST = rb_define_module_under(rb_cRubyVM, "AbstractSyntaxTree"); rb_cNode = rb_define_class_under(rb_mAST, "Node", rb_cObject); rb_undef_alloc_func(rb_cNode); -#ifdef DEBUG_ISEQ_NODE_ID - rb_define_method(rb_cNode, "node_id", ast_node_node_id, 0); -#endif } -- cgit v1.2.1