aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/cppexp.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp-if4.c8
3 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 46a89c2..a942946 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2000-05-10 Zack Weinberg <zack@wolery.cumb.org>
+ * cppexp.c (lex): Use %.*s to print non-NUL-terminated string.
+ Make error message friendlier.
+
* cpphash.h (struct hashnode): Use struct hack for name
member.
* cpphash.c (struct hashdummy): New.
diff --git a/gcc/cppexp.c b/gcc/cppexp.c
index 00eaea7..7e99292 100644
--- a/gcc/cppexp.c
+++ b/gcc/cppexp.c
@@ -466,8 +466,8 @@ lex (pfile, skip_evaluation)
&& tok_start[1] == toktab->operator[1])
break;
if (toktab->token == ERROR)
- cpp_error (pfile, "'%s' not allowed in operand of #if",
- tok_start);
+ cpp_error (pfile, "'%.*s' is not allowed in #if expressions",
+ (int) (tok_end - tok_start), tok_start);
op.op = toktab->token;
return op;
}
diff --git a/gcc/testsuite/gcc.dg/cpp-if4.c b/gcc/testsuite/gcc.dg/cpp-if4.c
new file mode 100644
index 0000000..84764fb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp-if4.c
@@ -0,0 +1,8 @@
+/* Regression test for proper error message. The token name isn't
+ NUL terminated, so we would print garbage after it. */
+/* { dg-do compile } */
+
+#if 1 += 2 /* { dg-error "'\\+=' is not allowed" "+= in if" } */
+syntax_error
+#endif
+int foo;