]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
Merge branch 'master' of github.com:graphitemaster/gmqcc
authorDale Weiler <killfieldengine@gmail.com>
Thu, 3 Jan 2013 12:05:02 +0000 (12:05 +0000)
committerDale Weiler <killfieldengine@gmail.com>
Thu, 3 Jan 2013 12:05:02 +0000 (12:05 +0000)
1  2 
parser.c

diff --combined parser.c
index c0ca8b59f4ce6588c2600197a6511ecbc994ae2e,f49184d65b4f09e63b6700f9c4b1b5b497dbd701..cb02e742b5a117acc87bf7dc5d5e084fbb7cb477
+++ b/parser.c
@@@ -549,6 -549,16 +549,16 @@@ static bool parser_sy_apply_operator(pa
          exprs[i]  = sy->out[vec_size(sy->out)+i].out;
          blocks[i] = sy->out[vec_size(sy->out)+i].block;
          asvalue[i] = (ast_value*)exprs[i];
+         if (exprs[i]->expression.vtype == TYPE_NOEXPR &&
+             !(i != 0 && op->id == opid2('?',':')))
+         {
+             if (ast_istype(exprs[i], ast_label))
+                 compile_error(ast_ctx(exprs[i]), "expected expression, got an unknown identifier");
+             else
+                 compile_error(ast_ctx(exprs[i]), "not an expression");
+             (void)!compile_warning(ast_ctx(exprs[i]), WARN_DEBUG, "expression %u\n", (unsigned int)i);
+         }
      }
  
      if (blocks[0] && !vec_size(blocks[0]->exprs) && op->id != opid1(',')) {
@@@ -1604,21 -1614,6 +1614,21 @@@ static ast_expression* parse_expression
                  }
                  else
                  {
 +                    /*
 +                     * sometimes people use preprocessing predefs without enabling them
 +                     * i've done this thousands of times already myself.  Lets check for
 +                     * it in the predef table.  And diagnose it better :)
 +                     */
 +                    if (!OPTS_FLAG(FTEPP_PREDEFS)) {
 +                        size_t i;
 +                        for (i = 0; i < sizeof(ftepp_predefs)/sizeof(*ftepp_predefs); i++) {
 +                            if (!strcmp(ftepp_predefs[i].name, parser_tokval(parser))) {
 +                                parseerror(parser, "unexpected ident: %s (use -fftepp-predef to enable pre-defined macros)", parser_tokval(parser));
 +                                goto onerr;
 +                            }
 +                        }
 +                    }
 +
                      parseerror(parser, "unexpected ident: %s", parser_tokval(parser));
                      goto onerr;
                  }