diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-11-21 19:05:50 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-11-21 19:05:50 +0900 |
| commit | 01cadd3e706c1713a7b77e2e214df2d1695f875f (patch) | |
| tree | 1f13245d252a9aaf99d966599d2cc7ec9b63ee73 /mrbgems/mruby-compiler/core/parse.y | |
| parent | f69eafc6bd00b077a8139da8889e69300e85c1fc (diff) | |
| download | mruby-01cadd3e706c1713a7b77e2e214df2d1695f875f.tar.gz mruby-01cadd3e706c1713a7b77e2e214df2d1695f875f.zip | |
parse.y: check duplicated argument names; fix #5575
Diffstat (limited to 'mrbgems/mruby-compiler/core/parse.y')
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 92d44c681..2a1017f24 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -299,6 +299,14 @@ static void local_add_f(parser_state *p, mrb_sym sym) { if (p->locals) { + node *n = p->locals->car; + while (n) { + if (sym(n->car) == sym) { + yyerror(p, "duplicated argument name"); + return; + } + n = n->cdr; + } p->locals->car = push(p->locals->car, nsym(sym)); } } |
