X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=lexer.c;h=7fc606c22d56962882702f7303568c5713c250ba;hb=fa401b6f568ef80a40194722e3ddc103f7378adb;hp=4d283f464ddb2ff1bec50ec20dc294fb08f200e5;hpb=46942df6c0d90de2fe88886e51b78589f69c4ded;p=xonotic%2Fgmqcc.git diff --git a/lexer.c b/lexer.c index 4d283f4..7fc606c 100644 --- 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, "warning", fmt, ap); + r = vcompile_warning(ctx, warntype, fmt, ap); va_end(ap); - - return opts_werror; + return r; } @@ -492,6 +491,7 @@ unroll: vec_pop(command); } vec_free(command); + lex_ungetch(lex, ' '); } if (command) { vec_pop(command); @@ -500,6 +500,7 @@ unroll: vec_pop(command); } vec_free(command); + lex_ungetch(lex, ' '); } if (pragma) { vec_pop(pragma); @@ -1062,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; @@ -1302,7 +1302,7 @@ int lex_do(lex_file *lex) if (!strcmp(v, keywords_qc[kw])) return (lex->tok.ttype = TOKEN_KEYWORD); } - if (opts_standard != COMPILER_QCC) { + if (opts.standard != COMPILER_QCC) { for (kw = 0; kw < num_keywords_fg; ++kw) { if (!strcmp(v, keywords_fg[kw])) return (lex->tok.ttype = TOKEN_KEYWORD); @@ -1353,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