]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - parser.c
even in non-qcc mode we need to search the variables for fields because of field...
[xonotic/gmqcc.git] / parser.c
index 1f071a74a412e1dc8c70dee469f7e5099abebf2a..62953ce46a49d56f7b7db0fece227bf3dd09cf47 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -484,7 +484,7 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy)
     switch (op->id)
     {
         default:
-            parseerror(parser, "internal error: unhandled operand");
+            parseerror(parser, "internal error: unhandled operator: %s (%i)", op->op, (int)op->id);
             return false;
 
         case opid1('.'):
@@ -965,8 +965,12 @@ static ast_expression* parser_expression_leave(parser_t *parser, bool stopatcomm
             /* variable */
             if (opts_standard == COMPILER_GMQCC)
             {
-                if (parser->memberof == TYPE_ENTITY)
-                    var = parser_find_field(parser, parser_tokval(parser));
+                if (parser->memberof == TYPE_ENTITY) {
+                    /* still get vars first since there could be a fieldpointer */
+                    var = parser_find_var(parser, parser_tokval(parser));
+                    if (!var)
+                        var = parser_find_field(parser, parser_tokval(parser));
+                }
                 else if (parser->memberof == TYPE_VECTOR)
                 {
                     parseerror(parser, "TODO: implement effective vector member access");