]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - lexer.c
unary not now uses NOT_F with -ftrue-empty-strings
[xonotic/gmqcc.git] / lexer.c
diff --git a/lexer.c b/lexer.c
index f1ef767f09d36a4e02cb041dc4bfb7a0a96095b7..7fc606c22d56962882702f7303568c5713c250ba 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -50,6 +50,8 @@ static const char *keywords_fg[] = {
     "typedef",
     "goto",
 
+    "noreturn",
+
     "__builtin_debug_printtype"
 };
 static size_t num_keywords_fg = sizeof(keywords_fg) / sizeof(keywords_fg[0]);
@@ -74,20 +76,17 @@ void lexerror(lex_file *lex, const char *fmt, ...)
 
 bool lexwarn(lex_file *lex, int warntype, const char *fmt, ...)
 {
+    bool    r;
+    lex_ctx ctx;
     va_list ap;
-    int lvl = LVL_WARNING;
-
-    if (!OPTS_WARN(warntype))
-        return false;
 
-    if (opts.werror)
-        lvl = LVL_ERROR;
+    ctx.file = lex->name;
+    ctx.line = lex->sline;
 
     va_start(ap, fmt);
-    con_vprintmsg(lvl, lex->name, lex->sline, (opts.werror ? "error" : "warning"), fmt, ap);
+    r = vcompile_warning(ctx, warntype, fmt, ap);
     va_end(ap);
-
-    return opts.werror;
+    return r;
 }
 
 
@@ -1064,7 +1063,6 @@ int lex_do(lex_file *lex)
             if (rc < 0)
                 return (lex->tok.ttype = TOKEN_FATAL);
 
-            v = lex->tok.value;
             if (lex->modelname) {
                 frame_macro m;
                 m.value = lex->framevalue;
@@ -1355,7 +1353,7 @@ int lex_do(lex_file *lex)
 
         lex->tok.ttype = TOKEN_CHARCONST;
          /* It's a vector if we can successfully scan 3 floats */
-#ifdef WIN32
+#ifdef _MSC_VER
         if (sscanf_s(lex->tok.value, " %f %f %f ",
                    &lex->tok.constval.v.x, &lex->tok.constval.v.y, &lex->tok.constval.v.z) == 3)
 #else