Aliases to aliases is a bad idea, revert. Added better tests to show unused aliases

This commit is contained in:
Dale Weiler 2013-02-06 09:28:42 +00:00
parent 21e890602d
commit 1e60bafcdc
3 changed files with 16 additions and 7 deletions

View file

@ -5280,13 +5280,6 @@ static bool parse_variable(parser_t *parser, ast_block *localblock, bool nofield
void *entry = (void*)var->desc; void *entry = (void*)var->desc;
ast_expression *find = parser_find_var(parser, 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) { 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; return false;

View file

@ -6,16 +6,29 @@ void alias_2() {
[[alias("alias_2")]] void alias_2_aliased(); [[alias("alias_2")]] void alias_2_aliased();
[[alias("alias_1")]] float alias_1_aliased; [[alias("alias_1")]] float alias_1_aliased;
// alias to an alias?
vector alias_3;
[[alias("alias_3")]] vector alias_3_aliased;
// expected output // expected output
// alias_2 // alias_2
// 3.14 // 3.14
void main() { void main() {
alias_2_aliased(); alias_2_aliased();
alias_3_aliased= '1 2 3';
print( print(
ftos( ftos(
alias_1_aliased alias_1_aliased
), ),
"\n" "\n"
); );
print(
"x ", ftos(alias_3_aliased_x), "\n",
"y ", ftos(alias_3_aliased_y), "\n",
"z ", ftos(alias_3_aliased_z), "\n"
);
} }

View file

@ -4,3 +4,6 @@ T: -execute
C: -std=gmqcc C: -std=gmqcc
M: alias_2 M: alias_2
M: 3.14 M: 3.14
M: x 1
M: y 2
M: z 3