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

@@ -43,6 +43,7 @@ void fstk_RunInclude(char *tzFileName);
void fstk_RunMacroArg(int32_t s);
void fstk_Init(char *s);
void fstk_Dump(void);
void fstk_DumpStringExpansions(void);
void fstk_AddIncludePath(char *s);
uint32_t fstk_RunMacro(char *s);
void fstk_RunRept(uint32_t count, int32_t nReptLineNo);

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);
}

View File

@@ -1,2 +1,66 @@
ERROR: equs-recursion.asm(2):
Recursion limit (64) exceeded
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"
while expanding symbol "recurse"