improved error-handling on conditionally excluded #-lines
authoreck <none@none>
Mon, 10 Dec 1990 11:17:34 +0000 (11:17 +0000)
committereck <none@none>
Mon, 10 Dec 1990 11:17:34 +0000 (11:17 +0000)
lang/cem/cemcom.ansi/domacro.c
lang/cem/cemcom.ansi/dumpidf.c
lang/cem/cpp.ansi/domacro.c

index 2cee0e2..351c591 100644 (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:
index 2b185c1..eb04f2f 100644 (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
index 4447394..2dd3170 100644 (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;