Add a flag for warnings-as-errors.
This commit is contained in:
parent
e6ff9c36ed
commit
01d1c0c806
@ -74,7 +74,7 @@ static const char *prefix[3]={ "error", "fatal error", "warning" };
|
|||||||
if (number!=0) {
|
if (number!=0) {
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
if (number < 160)
|
if (number < 160 || (number >= 200 && sc_warnings_are_errors))
|
||||||
idx = 0;
|
idx = 0;
|
||||||
else if (number < 200)
|
else if (number < 200)
|
||||||
idx = 1;
|
idx = 1;
|
||||||
|
@ -912,6 +912,7 @@ extern int pc_tag_nullfunc_t; /* the null function type */
|
|||||||
extern int pc_anytag; /* global any tag */
|
extern int pc_anytag; /* global any tag */
|
||||||
extern int glbstringread; /* last global string read */
|
extern int glbstringread; /* last global string read */
|
||||||
extern int sc_require_newdecls; /* only newdecls are allowed */
|
extern int sc_require_newdecls; /* only newdecls are allowed */
|
||||||
|
extern bool sc_warnings_are_errors;
|
||||||
|
|
||||||
extern constvalue sc_automaton_tab; /* automaton table */
|
extern constvalue sc_automaton_tab; /* automaton table */
|
||||||
extern constvalue sc_state_tab; /* state table */
|
extern constvalue sc_state_tab; /* state table */
|
||||||
|
@ -944,6 +944,9 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
case 'e':
|
case 'e':
|
||||||
strlcpy(ename,option_value(ptr),_MAX_PATH); /* set name of error file */
|
strlcpy(ename,option_value(ptr),_MAX_PATH); /* set name of error file */
|
||||||
break;
|
break;
|
||||||
|
case 'E':
|
||||||
|
sc_warnings_are_errors = true;
|
||||||
|
break;
|
||||||
#if defined __WIN32__ || defined _WIN32 || defined _Windows
|
#if defined __WIN32__ || defined _WIN32 || defined _Windows
|
||||||
case 'H':
|
case 'H':
|
||||||
hwndFinish=(HWND)atoi(option_value(ptr));
|
hwndFinish=(HWND)atoi(option_value(ptr));
|
||||||
@ -1312,6 +1315,7 @@ static void about(void)
|
|||||||
pc_printf(" -t<num> TAB indent size (in character positions, default=%d)\n",sc_tabsize);
|
pc_printf(" -t<num> TAB indent size (in character positions, default=%d)\n",sc_tabsize);
|
||||||
pc_printf(" -v<num> verbosity level; 0=quiet, 1=normal, 2=verbose (default=%d)\n",verbosity);
|
pc_printf(" -v<num> verbosity level; 0=quiet, 1=normal, 2=verbose (default=%d)\n",verbosity);
|
||||||
pc_printf(" -w<num> disable a specific warning by its number\n");
|
pc_printf(" -w<num> disable a specific warning by its number\n");
|
||||||
|
pc_printf(" -E treat warnings as errors\n");
|
||||||
pc_printf(" -X<num> abstract machine size limit in bytes\n");
|
pc_printf(" -X<num> abstract machine size limit in bytes\n");
|
||||||
pc_printf(" -XD<num> abstract machine data/stack size limit in bytes\n");
|
pc_printf(" -XD<num> abstract machine data/stack size limit in bytes\n");
|
||||||
pc_printf(" -\\ use '\\' for escape characters\n");
|
pc_printf(" -\\ use '\\' for escape characters\n");
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
// vim: set ts=8 sts=2 sw=2 tw=99 et:
|
||||||
/* Pawn compiler - Error message system
|
/* Pawn compiler - Error message system
|
||||||
* In fact a very simple system, using only 'panic mode'.
|
* In fact a very simple system, using only 'panic mode'.
|
||||||
*
|
*
|
||||||
@ -81,6 +82,8 @@ static short lastfile;
|
|||||||
int errline = sErrLine;
|
int errline = sErrLine;
|
||||||
sErrLine = -1;
|
sErrLine = -1;
|
||||||
|
|
||||||
|
bool is_warning = (number >= 200 && !sc_warnings_are_errors);
|
||||||
|
|
||||||
/* errflag is reset on each semicolon.
|
/* errflag is reset on each semicolon.
|
||||||
* In a two-pass compiler, an error should not be reported twice. Therefore
|
* In a two-pass compiler, an error should not be reported twice. Therefore
|
||||||
* the error reporting is enabled only in the second pass (and only when
|
* the error reporting is enabled only in the second pass (and only when
|
||||||
@ -113,8 +116,13 @@ static short lastfile;
|
|||||||
errnum++; /* a fatal error also counts as an error */
|
errnum++; /* a fatal error also counts as an error */
|
||||||
} else {
|
} else {
|
||||||
msg=warnmsg[number-200];
|
msg=warnmsg[number-200];
|
||||||
pre=prefix[2];
|
if (sc_warnings_are_errors) {
|
||||||
warnnum++;
|
pre=prefix[0];
|
||||||
|
errnum++;
|
||||||
|
} else {
|
||||||
|
pre=prefix[2];
|
||||||
|
warnnum++;
|
||||||
|
}
|
||||||
} /* if */
|
} /* if */
|
||||||
|
|
||||||
assert(errstart<=fline);
|
assert(errstart<=fline);
|
||||||
@ -164,7 +172,7 @@ static short lastfile;
|
|||||||
errorcount=0;
|
errorcount=0;
|
||||||
lastline=fline;
|
lastline=fline;
|
||||||
lastfile=fcurrent;
|
lastfile=fcurrent;
|
||||||
if (number<200)
|
if (!is_warning)
|
||||||
errorcount++;
|
errorcount++;
|
||||||
if (errorcount>=3)
|
if (errorcount>=3)
|
||||||
error(167); /* too many error/warning messages on one line */
|
error(167); /* too many error/warning messages on one line */
|
||||||
|
@ -94,6 +94,7 @@ int pc_optimize=sOPTIMIZE_NOMACRO; /* (peephole) optimization level */
|
|||||||
int pc_memflags=0; /* special flags for the stack/heap usage */
|
int pc_memflags=0; /* special flags for the stack/heap usage */
|
||||||
int sc_showincludes=0; /* show include files */
|
int sc_showincludes=0; /* show include files */
|
||||||
int sc_require_newdecls=0; /* Require new-style declarations */
|
int sc_require_newdecls=0; /* Require new-style declarations */
|
||||||
|
bool sc_warnings_are_errors=false;
|
||||||
|
|
||||||
constvalue sc_automaton_tab = { NULL, "", 0, 0}; /* automaton table */
|
constvalue sc_automaton_tab = { NULL, "", 0, 0}; /* automaton table */
|
||||||
constvalue sc_state_tab = { NULL, "", 0, 0}; /* state table */
|
constvalue sc_state_tab = { NULL, "", 0, 0}; /* state table */
|
||||||
|
Loading…
Reference in New Issue
Block a user