From: Wolfgang (Blub) Bumiller Date: Sat, 18 Aug 2012 19:56:42 +0000 (+0200) Subject: implement correct behaviour for shadows locals X-Git-Tag: 0.1-rc1~173 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=78d04a8352f3eb60e3a2a97fe5bf881366cc2f79;p=xonotic%2Fgmqcc.git implement correct behaviour for shadows locals --- diff --git a/parser.c b/parser.c index 567a622..fa91069 100644 --- a/parser.c +++ b/parser.c @@ -1842,20 +1842,20 @@ static bool parser_variable(parser_t *parser, ast_block *localblock) { if (olddecl) { + ast_value_delete(var); if (isparam && parsewarning(parser, WARN_LOCAL_SHADOWS, "a parameter is shadowing local `%s`", parser_tokval(parser))) { - ast_value_delete(var); return false; } else if (!isparam) { - ast_value_delete(var); parseerror(parser, "local `%s` already declared here: %s:%i", parser_tokval(parser), ast_ctx(olddecl).file, (int)ast_ctx(olddecl).line); return false; } + goto nextvar; } } } @@ -2010,6 +2010,7 @@ static bool parser_variable(parser_t *parser, ast_block *localblock) } } +nextvar: if (!parser_next(parser)) { ast_value_delete(var); return false;