From 511a5d13d3c1b54f44be6ea54d68741d29febf69 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 24 Sep 2025 14:11:03 +0900 Subject: [PATCH] mruby-compiler: remove unused NODE_KW_HASH node type Eliminates NODE_KW_HASH enum, mrb_ast_kw_hash_node struct, gen_kw_hash_var function, and related macros. All keyword hash functionality now unified under NODE_HASH, completing the AST simplification. Co-authored-by: Claude --- mrbgems/mruby-compiler/core/codegen.c | 17 ----------------- mrbgems/mruby-compiler/core/node.h | 8 -------- mrbgems/mruby-compiler/core/parse.y | 13 ------------- mrbgems/mruby-compiler/core/y.tab.c | 13 ------------- 4 files changed, 51 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 38095a532..030ad8ff0 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -5431,19 +5431,6 @@ gen_lambda_var(codegen_scope *s, node *varnode, int val) push(); } -static void -gen_kw_hash_var(codegen_scope *s, node *varnode, int val) -{ - struct mrb_ast_kw_hash_node *n = kw_hash_node(varnode); - - int nk = gen_hash(s, n->args, val, GEN_LIT_ARY_MAX); - if (val && nk >= 0) { - pop_n(nk*2); - genop_2(s, OP_HASH, cursp(), nk); - push(); - } -} - static void gen_words_var(codegen_scope *s, node *varnode, int val) { @@ -5920,10 +5907,6 @@ codegen(codegen_scope *s, node *tree, int val) gen_lambda_var(s, tree, val); break; - case NODE_KW_HASH: - gen_kw_hash_var(s, tree, val); - break; - case NODE_WORDS: gen_words_var(s, tree, val); break; diff --git a/mrbgems/mruby-compiler/core/node.h b/mrbgems/mruby-compiler/core/node.h index f9721a988..7bb82ce1a 100644 --- a/mrbgems/mruby-compiler/core/node.h +++ b/mrbgems/mruby-compiler/core/node.h @@ -37,7 +37,6 @@ enum node_type { NODE_ARRAY, NODE_ZARRAY, NODE_HASH, - NODE_KW_HASH, NODE_RETURN, NODE_YIELD, NODE_LVAR, @@ -799,11 +798,6 @@ struct mrb_ast_zarray_node { struct mrb_ast_var_header hdr; }; -struct mrb_ast_kw_hash_node { - struct mrb_ast_var_header hdr; - struct mrb_ast_node *args; -}; - struct mrb_ast_words_node { struct mrb_ast_var_header hdr; struct mrb_ast_node *args; @@ -898,7 +892,6 @@ struct mrb_ast_postexe_node { #define zsuper_node(n) ((struct mrb_ast_super_node*)(n)) #define lambda_node(n) ((struct mrb_ast_lambda_node*)(n)) #define zarray_node(n) ((struct mrb_ast_zarray_node*)(n)) -#define kw_hash_node(n) ((struct mrb_ast_kw_hash_node*)(n)) #define words_node(n) ((struct mrb_ast_words_node*)(n)) #define symbols_node(n) ((struct mrb_ast_symbols_node*)(n)) #define splat_node(n) ((struct mrb_ast_splat_node*)(n)) @@ -920,7 +913,6 @@ struct mrb_ast_postexe_node { #define LAMBDA_NODE_LOCALS(n) (lambda_node(n)->locals) #define LAMBDA_NODE_ARGS(n) (lambda_node(n)->args) #define LAMBDA_NODE_BODY(n) (lambda_node(n)->body) -#define KW_HASH_NODE_ARGS(n) (kw_hash_node(n)->args) #define WORDS_NODE_ARGS(n) (words_node(n)->args) #define SYMBOLS_NODE_ARGS(n) (symbols_node(n)->args) #define SPLAT_NODE_VALUE(n) (splat_node(n)->value) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index cf11dbe98..a50570b84 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -7885,19 +7885,6 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset) } break; - case NODE_KW_HASH: - printf("NODE_KW_HASH:\n"); - while (tree) { - dump_prefix(tree, offset+1); - printf("key:\n"); - mrb_parser_dump(mrb, tree->car->car, offset+2); - dump_prefix(tree, offset+1); - printf("value:\n"); - mrb_parser_dump(mrb, tree->car->cdr, offset+2); - tree = tree->cdr; - } - break; - case NODE_SPLAT: printf("NODE_SPLAT:\n"); mrb_parser_dump(mrb, tree, offset+1); diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index c7d203510..bbfac0ecc 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -14714,19 +14714,6 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset) } break; - case NODE_KW_HASH: - printf("NODE_KW_HASH:\n"); - while (tree) { - dump_prefix(tree, offset+1); - printf("key:\n"); - mrb_parser_dump(mrb, tree->car->car, offset+2); - dump_prefix(tree, offset+1); - printf("value:\n"); - mrb_parser_dump(mrb, tree->car->cdr, offset+2); - tree = tree->cdr; - } - break; - case NODE_SPLAT: printf("NODE_SPLAT:\n"); mrb_parser_dump(mrb, tree, offset+1);