diff options
Diffstat (limited to 'ast.c')
-rw-r--r-- | ast.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -245,6 +245,17 @@ ast_node_type(rb_execution_context_t *ec, VALUE self) return rb_sym_intern_ascii_cstr(node_type_to_str(data->node)); } +#ifdef EXPERIMENTAL_ISEQ_NODE_ID +static VALUE +ast_node_node_id(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 static VALUE @@ -695,4 +706,7 @@ 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 EXPERIMENTAL_ISEQ_NODE_ID + rb_define_method(rb_cNode, "node_id", ast_node_node_id, 0); +#endif } |