From: Dale Weiler Date: Wed, 6 Feb 2013 08:43:11 +0000 (+0000) Subject: Support for aliases to aliases too. X-Git-Tag: before-library~144 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=6fc141733ffe0db41ba689516951c97481e54c7c;p=xonotic%2Fgmqcc.git Support for aliases to aliases too. --- diff --git a/parser.c b/parser.c index 7e86b23..3eaef0c 100644 --- a/parser.c +++ b/parser.c @@ -5275,9 +5275,18 @@ static bool parse_variable(parser_t *parser, ast_block *localblock, bool nofield } } } else { - ast_expression *find = parser_find_var(parser, var->desc); + void *entry = (void*)var->desc; + ast_expression *find = parser_find_var(parser, var->desc); + + /* aliases to aliases are also allowed */ + if (!find) { + char *name = NULL; + if ((find = parser_find_var(parser, (const char *)(name = util_htget(parser->aliases, var->desc))))) + entry = (void*)name; + } + if (!find) { - compile_error(parser_ctx(parser), "undeclared variable `%s` for alias `%s", var->desc, var->name); + compile_error(parser_ctx(parser), "undeclared variable `%s` for alias `%s`", var->desc, var->name); return false; } @@ -5294,7 +5303,7 @@ static bool parse_variable(parser_t *parser, ast_block *localblock, bool nofield return false; } - util_htset(parser->aliases, var->name, (void*)var->desc); + util_htset(parser->aliases, var->name, entry); /* * TODO: vector, find . or _ (last of), and build * [._]x, [._]y, [._]z aliases too.