summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/parse.y
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-11-21 19:05:50 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-11-21 19:05:50 +0900
commit01cadd3e706c1713a7b77e2e214df2d1695f875f (patch)
tree1f13245d252a9aaf99d966599d2cc7ec9b63ee73 /mrbgems/mruby-compiler/core/parse.y
parentf69eafc6bd00b077a8139da8889e69300e85c1fc (diff)
downloadmruby-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.y8
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));
}
}