improved error-handling on conditionally excluded #-lines

This commit is contained in:
eck 1990-12-10 11:17:34 +00:00
parent 495a037714
commit 007151ef1d
3 changed files with 9 additions and 3 deletions

View file

@ -190,6 +190,9 @@ int to_endif;
toknum = GetToken(&tk);
ReplaceMacros = 1;
if (toknum != IDENTIFIER) {
if (toknum != INTEGER) {
lexerror("illegal # line");
}
SkipToNewLine();
continue;
}
@ -202,7 +205,7 @@ int to_endif;
default:
case K_UNKNOWN:
/* invalid word seen after the '#' */
lexerror("%s: unknown control", tk.tk_idf->id_text);
lexwarning("%s: unknown control", tk.tk_idf->id_text);
/* fallthrough */
case K_DEFINE:
case K_ERROR:

View file

@ -26,7 +26,7 @@
#include "static.h"
#include "declar.h"
/* Some routines (symbol2str, token2str, type2str) which should have
/* Some routines (symbol2str, type2str, qual2str) which should have
* yielded strings are written to yield a pointer to a transient piece
* of memory, containing the string, since this is the only reasonable
* thing to do in C. `Transient' means that the result may soon

View file

@ -194,6 +194,9 @@ int to_endif;
toknum = GetToken(&tk);
ReplaceMacros = 1;
if (toknum != IDENTIFIER) {
if (toknum != INTEGER) {
error("illegal # line");
}
SkipToNewLine();
continue;
}
@ -205,7 +208,7 @@ int to_endif;
id = findidf(tk.tk_str);
if (id == (struct idf *)0) {
/* invalid word seen after the '#' */
error("%s: unknown control", tk.tk_str);
warning("%s: unknown control", tk.tk_str);
}
free(tk.tk_str);
if (id == (struct idf *)0) continue;