Merge pull request #425 from ISSOtm/eexpansion_error

Add info about string expansions in error reports
This commit is contained in:
Eldred Habert
2019-10-03 10:20:49 +02:00
committed by GitHub
4 changed files with 88 additions and 7 deletions

View File

@@ -262,6 +262,20 @@ void fstk_Dump(void)
fprintf(stderr, "%s(%d)", tzCurrentFileName, nLineNo);
}
/*
* Dump the string expansion stack to stderr
*/
void fstk_DumpStringExpansions(void)
{
const struct sStringExpansionPos *pExpansion = pCurrentStringExpansion;
while (pExpansion) {
fprintf(stderr, "while expanding symbol \"%s\"\n",
pExpansion->tzName);
pExpansion = pExpansion->pParent;
}
}
/*
* Extra includepath stuff
*/

View File

@@ -239,12 +239,13 @@ static void opt_ParseDefines(void)
*/
void verror(const char *fmt, va_list args)
{
fprintf(stderr, "ERROR: ");
fputs("ERROR: ", stderr);
fstk_Dump();
fprintf(stderr, ":\n ");
fputs(":\n ", stderr);
vfprintf(stderr, fmt, args);
fprintf(stderr, "\n");
nErrors += 1;
fputc('\n', stderr);
fstk_DumpStringExpansions();
nErrors++;
}
void yyerror(const char *fmt, ...)
@@ -276,11 +277,12 @@ void warning(const char *fmt, ...)
va_start(args, fmt);
fprintf(stderr, "warning: ");
fputs("warning: ", stderr);
fstk_Dump();
fprintf(stderr, ":\n ");
fputs(":\n ", stderr);
vfprintf(stderr, fmt, args);
fprintf(stderr, "\n");
fputc('\n', stderr);
fstk_DumpStringExpansions();
va_end(args);
}