mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
[Universal parser] Improve AST structure
This patch moves `ast->node_buffer->config` to `ast->config` aiming to improve readability and maintainability of the source. ## Background We could not add the `config` field to the `rb_ast_t *` due to the five-word restriction of the IMEMO object. But it is now doable by merging https://github.com/ruby/ruby/pull/10618 ## About assigning `&rb_global_parser_config` to `ast->config` in `ast_alloc()` The approach of not setting `ast->config` in `ast_alloc()` means that the client, CRuby in this scenario, that directly calls `ast_alloc()` will be responsible for releasing it if a resource that is passed to AST needs to be released. However, we have put on hold whether we can guarantee the above so far, thus, this patch looks like that. ``` // ruby_parser.c static VALUE ast_alloc(void) { rb_ast_t *ast; VALUE vast = TypedData_Make_Struct(0, rb_ast_t, &ast_data_type, ast); #ifdef UNIVERSAL_PARSER ast = (rb_ast_t *)DATA_PTR(vast); ast->config = &rb_global_parser_config; #endif return vast; } ```
This commit is contained in:
parent
8ad0b2cd31
commit
ddd8da4b6b
4 changed files with 23 additions and 37 deletions
3
node.h
3
node.h
|
@ -39,9 +39,6 @@ struct node_buffer_struct {
|
|||
// - location info
|
||||
// Array, whose entry is array
|
||||
rb_parser_ary_t *tokens;
|
||||
#ifdef UNIVERSAL_PARSER
|
||||
const rb_parser_config_t *config;
|
||||
#endif
|
||||
};
|
||||
|
||||
RUBY_SYMBOL_EXPORT_BEGIN
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue