* gcc.dg/cpp/avoidpaste2.c: New tests.
authorNeil Booth <neil@daikokuya.demon.co.uk>
Thu, 1 Feb 2001 19:15:06 +0000 (19:15 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Thu, 1 Feb 2001 19:15:06 +0000 (19:15 +0000)
From-SVN: r39394

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/avoidpaste2.c [new file with mode: 0644]

index 14117aed6f57cc60b4638fda87b0bced4937de11..c00497e1588eb799202e675cb4a763b5d2c4aa64 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-01  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+        * gcc.dg/cpp/avoidpaste2.c: New tests.
+
 2001-01-31  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.dg/gnu99-init-1.c: Add test for [0 ... 0] range.
diff --git a/gcc/testsuite/gcc.dg/cpp/avoidpaste2.c b/gcc/testsuite/gcc.dg/cpp/avoidpaste2.c
new file mode 100644 (file)
index 0000000..5094e3d
--- /dev/null
@@ -0,0 +1,35 @@
+/* Copyright (C) 2001 Free Software Foundation, Inc.  */
+
+/* { dg-do preprocess } */
+
+/* This tests that we avoid accidental pasting, as well as gratuitous
+   space insertion, in various nasty places _inside_ a macro's
+   replacement list: on either side of a paste, and on either side of
+   an argument.  It also tests that we don't pass empty macro leading
+   whitespace to the next line - this problem use to break Emacs
+   preprocessor abuse.
+
+   Neil Booth, 1 Feb 2001.  */
+
+#define EMPTY_WITH_LEADING_SPACE
+#define f(x, y) :x: -y##> -##y>
+#define g(x, y) :x: :y##2 2##y:
+
+/* This should preprocess as
+
+: : : - > - >
+:2: :22 22:
+
+We used to get a space at the start of the line.  */
+
+ EMPTY_WITH_LEADING_SPACE
+f(:,) 
+g(2, 2)
+
+/*
+   { dg-final { if ![file exists avoidpaste2.i] { return }                } }
+   { dg-final { if { [grep avoidpaste2.i "^: : : - > - >"] != "" } \{     } }
+   { dg-final { if { [grep avoidpaste2.i "^:2: :22 22:"] != "" }   \{     } }
+   { dg-final { return \} \}                                              } }
+   { dg-final { fail "avoidpaste2.c: paste avoidance"                     } }
+*/