X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=parser.c;h=c6819223cb279d4233ff8af9db6de883d31469ca;hp=7034e64c7314ede34e1d65878c7b71c746efa40e;hb=69b55ccc03b56af1f6c05eb45866ab198307487f;hpb=aed2b1031c6466a2dbcf909faeac1ac1cff0f6e6 diff --git a/parser.c b/parser.c index 7034e64..c681922 100644 --- a/parser.c +++ b/parser.c @@ -266,6 +266,7 @@ static ast_value* parser_const_string(parser_t *parser, const char *str, bool do char name[32]; util_snprintf(name, sizeof(name), "dotranslate_%lu", (unsigned long)(parser->translated++)); ast_value_set_name(out, name); + out->expression.flags |= AST_FLAG_INCLUDE_DEF; } return out; } @@ -279,6 +280,7 @@ static ast_value* parser_const_string(parser_t *parser, const char *str, bool do char name[32]; util_snprintf(name, sizeof(name), "dotranslate_%lu", (unsigned long)(parser->translated++)); out = ast_value_new(parser_ctx(parser), name, TYPE_STRING); + out->expression.flags |= AST_FLAG_INCLUDE_DEF; } else out = ast_value_new(parser_ctx(parser), "#IMMEDIATE", TYPE_STRING); out->cvq = CV_CONST; @@ -5639,11 +5641,11 @@ skipvar: } if (parser->tok == '#') { - ast_function *func = NULL; - ast_value *number = NULL; - float fractional = 0; - float integral = 0; - int builtin_num = 0; + ast_function *func = NULL; + ast_value *number = NULL; + float fractional; + float integral; + int builtin_num; if (localblock) { parseerror(parser, "cannot declare builtins within functions"); @@ -5689,7 +5691,9 @@ skipvar: /* we only want the integral part anyways */ builtin_num = integral; - } else if (parser->tok != TOKEN_INTCONST) { + } else if (parser->tok == TOKEN_INTCONST) { + builtin_num = parser_token(parser)->constval.i; + } else { parseerror(parser, "builtin number must be a compile time constant"); break; } @@ -5709,9 +5713,7 @@ skipvar: } vec_push(parser->functions, func); - func->builtin = -((OPTS_FLAG(EXPRESSIONS_FOR_BUILTINS)) - ? builtin_num - : parser_token(parser)->constval.i) - 1; + func->builtin = -builtin_num-1; } if (OPTS_FLAG(EXPRESSIONS_FOR_BUILTINS)