diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-12-25 22:57:33 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-12-27 11:05:56 +0900 |
| commit | ed8491cde671e01ac77ead6f8fefee073bc0a9af (patch) | |
| tree | 489ea72a1276a9f3f99a15bfcbe51604e5afb605 /mrbgems/mruby-compiler | |
| parent | 7e6355975eff730c1fefc414fbf7c9d0bacbef01 (diff) | |
| download | mruby-ed8491cde671e01ac77ead6f8fefee073bc0a9af.tar.gz mruby-ed8491cde671e01ac77ead6f8fefee073bc0a9af.zip | |
Numbered parameters: usually linked list uses `cdr` for links.
Diffstat (limited to 'mrbgems/mruby-compiler')
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index ddf420d17..2f433aaf0 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -318,19 +318,19 @@ locals_node(parser_state *p) static void nvars_nest(parser_state *p) { - p->nvars = cons(p->nvars, nint(0)); + p->nvars = cons(nint(0), p->nvars); } static void nvars_block(parser_state *p) { - p->nvars = cons(p->nvars, nint(-2)); + p->nvars = cons(nint(-2), p->nvars); } static void nvars_unnest(parser_state *p) { - p->nvars = p->nvars->car; + p->nvars = p->nvars->cdr; } /* (:scope (vars..) (prog...)) */ @@ -671,11 +671,11 @@ new_cvar(parser_state *p, mrb_sym sym) static node* new_nvar(parser_state *p, int num) { - if (!p->nvars || intn(p->nvars->cdr) < -1) { + if (!p->nvars || intn(p->nvars->car) < -1) { yyerror(p, "numbered parameter outside block"); } else { - int nvars = intn(p->nvars->cdr); - p->nvars->cdr = nint(nvars > num ? nvars : num); + int nvars = intn(p->nvars->car); + p->nvars->car = nint(nvars > num ? nvars : num); } return cons((node*)NODE_NVAR, nint(num)); } @@ -840,7 +840,7 @@ new_block_arg(parser_state *p, node *a) static node* setup_numparams(parser_state *p, node *a) { - int nvars = intn(p->nvars->cdr); + int nvars = intn(p->nvars->car); if (nvars > 0) { int i; mrb_sym sym; @@ -5964,15 +5964,15 @@ parser_yylex(parser_state *p) int n = tok(p)[1] - '0'; if (n > 0) { - node *nvars = p->nvars->car; + node *nvars = p->nvars->cdr; while (nvars) { - if (intn(nvars->cdr) > 0) { + if (intn(nvars->car) > 0) { yywarning(p, "numbered parameter in nested block"); break; } - nvars->cdr = nint(-1); - nvars = nvars->car; + nvars->car = nint(-1); + nvars = nvars->cdr; } pylval.num = n; p->lstate = EXPR_END; |
