glsl/glcpp: Fixup glcpp tests for redefining a macro with whitespace changes.
authorCarl Worth <cworth@cworth.org>
Thu, 12 Jun 2014 01:02:54 +0000 (18:02 -0700)
committerCarl Worth <cworth@cworth.org>
Wed, 9 Jul 2014 19:05:13 +0000 (12:05 -0700)
Previously, the test suite was expecting the compiler to allow a redefintion
of a macro with whitespace added, but gcc is more strict and allows only for
changes in the amounts of whitespace, (but insists that whitespace exist or
not in exactly the same places).

See: https://gcc.gnu.org/onlinedocs/cpp/Undefining-and-Redefining-Macros.html:

 These definitions are effectively the same:

      #define FOUR (2 + 2)
      #define FOUR         (2    +    2)
      #define FOUR (2 /* two */ + 2)

 but these are not:

      #define FOUR (2 + 2)
      #define FOUR ( 2+2 )
      #define FOUR (2 * 2)
      #define FOUR(score,and,seven,years,ago) (2 + 2)

This change adjusts the existing "redefine-macro-legitimate" test to work with
the more strict understanding, and adds a new "redefine-whitespace" test to
verify that changes in the position of whitespace are flagged as errors.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/glsl/glcpp/tests/088-redefine-macro-legitimate.c
src/glsl/glcpp/tests/122-redefine-whitespace.c [new file with mode: 0644]
src/glsl/glcpp/tests/122-redefine-whitespace.c.expected [new file with mode: 0644]

index 0e0666b8b356e2222b6a8860c56eb3fb6a30245c..422c654641403e3f95e100e604acf073a5bbc328 100644 (file)
@@ -1,5 +1,5 @@
 #define abc 123
 #define abc 123
 
-#define foo(x) (x)+23
 #define foo(x) ( x ) + 23
+#define foo(x) (  x  )  +  23
diff --git a/src/glsl/glcpp/tests/122-redefine-whitespace.c b/src/glsl/glcpp/tests/122-redefine-whitespace.c
new file mode 100644 (file)
index 0000000..ae7ea09
--- /dev/null
@@ -0,0 +1,16 @@
+/* Original definitions. */
+#define TWO  ( 1+1 )
+#define FOUR (2 + 2)
+#define SIX  (3 + 3)
+
+/* Redefinitions with whitespace in same places, but different amounts, (so no
+ * error). */
+#define TWO    (       1+1   )
+#define FOUR    (2     +  2)
+#define SIX    (3/*comment is whitespace*/+   /* collapsed */ /* to */ /* one */ /* space */  3)
+
+/* Redefinitions with whitespace in different places. Each of these should
+ * trigger an error. */
+#define TWO  (1 + 1)
+#define FOUR ( 2+2 )
+#define SIX  (/*not*/3 + 3/*expected*/)
diff --git a/src/glsl/glcpp/tests/122-redefine-whitespace.c.expected b/src/glsl/glcpp/tests/122-redefine-whitespace.c.expected
new file mode 100644 (file)
index 0000000..193ebc4
--- /dev/null
@@ -0,0 +1,23 @@
+0:14(9): preprocessor error: Redefinition of macro TWO
+
+0:15(9): preprocessor error: Redefinition of macro FOUR
+
+0:16(9): preprocessor error: Redefinition of macro SIX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+