]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - parser.c
fix the INCLUDE_DEF flag getting applied regardless of dotranslate...
[xonotic/gmqcc.git] / parser.c
index 7034e64c7314ede34e1d65878c7b71c746efa40e..c6819223cb279d4233ff8af9db6de883d31469ca 100644 (file)
--- 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)