mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-compiler: unify loop node dump cases to reduce duplication
Consolidated NODE_WHILE, NODE_UNTIL, NODE_WHILE_MOD, and NODE_UNTIL_MOD dump cases using a shared dump_loop_node label. All four loop constructs have identical structure (condition + body) and only differ in their node type names. Uses fall-through for the last case (NODE_UNTIL_MOD) to avoid unnecessary goto. This eliminates code duplication (28 lines -> 12 lines) while maintaining the same clear output format for each loop type. Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -8076,26 +8076,17 @@ dump_node(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
case NODE_WHILE:
|
||||
printf("NODE_WHILE:\n");
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("cond:\n");
|
||||
dump_node(mrb, WHILE_NODE_CONDITION(tree), offset+2);
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("body:\n");
|
||||
dump_node(mrb, WHILE_NODE_BODY(tree), offset+2);
|
||||
break;
|
||||
|
||||
goto dump_loop_node;
|
||||
case NODE_UNTIL:
|
||||
printf("NODE_UNTIL:\n");
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("cond:\n");
|
||||
dump_node(mrb, UNTIL_NODE_CONDITION(tree), offset+2);
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("body:\n");
|
||||
dump_node(mrb, UNTIL_NODE_BODY(tree), offset+2);
|
||||
break;
|
||||
|
||||
goto dump_loop_node;
|
||||
case NODE_WHILE_MOD:
|
||||
printf("NODE_WHILE_MOD:\n");
|
||||
goto dump_loop_node;
|
||||
case NODE_UNTIL_MOD:
|
||||
printf("NODE_UNTIL_MOD:\n");
|
||||
|
||||
dump_loop_node:
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("cond:\n");
|
||||
dump_node(mrb, WHILE_NODE_CONDITION(tree), offset+2);
|
||||
@@ -8104,16 +8095,6 @@ dump_node(mrb_state *mrb, node *tree, int offset)
|
||||
dump_node(mrb, WHILE_NODE_BODY(tree), offset+2);
|
||||
break;
|
||||
|
||||
case NODE_UNTIL_MOD:
|
||||
printf("NODE_UNTIL_MOD:\n");
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("cond:\n");
|
||||
dump_node(mrb, UNTIL_NODE_CONDITION(tree), offset+2);
|
||||
dump_prefix(offset+1, lineno);
|
||||
printf("body:\n");
|
||||
dump_node(mrb, UNTIL_NODE_BODY(tree), offset+2);
|
||||
break;
|
||||
|
||||
case NODE_FOR:
|
||||
printf("NODE_FOR:\n");
|
||||
if (FOR_NODE_VAR(tree)) {
|
||||
|
||||
Reference in New Issue
Block a user