[Mesa-dev] [PATCH] glsl: Fixup glcpp tests for redefining a macro with whitespace changes.

Anuj Phogat anuj.phogat at gmail.com
Mon Jun 16 11:07:44 PDT 2014


On Wed, Jun 11, 2014 at 6:11 PM, Carl Worth <cworth at cworth.org> wrote:
> 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.
> ---
>  .../glcpp/tests/088-redefine-macro-legitimate.c    |  2 +-
>  src/glsl/glcpp/tests/122-redefine-whitespace.c     | 16 +++++++++++++++
>  .../glcpp/tests/122-redefine-whitespace.c.expected | 23 ++++++++++++++++++++++
>  3 files changed, 40 insertions(+), 1 deletion(-)
>  create mode 100644 src/glsl/glcpp/tests/122-redefine-whitespace.c
>  create mode 100644 src/glsl/glcpp/tests/122-redefine-whitespace.c.expected
>
> diff --git a/src/glsl/glcpp/tests/088-redefine-macro-legitimate.c b/src/glsl/glcpp/tests/088-redefine-macro-legitimate.c
> index 0e0666b..422c654 100644
> --- a/src/glsl/glcpp/tests/088-redefine-macro-legitimate.c
> +++ b/src/glsl/glcpp/tests/088-redefine-macro-legitimate.c
> @@ -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
> index 0000000..ae7ea09
> --- /dev/null
> +++ b/src/glsl/glcpp/tests/122-redefine-whitespace.c
> @@ -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
> index 0000000..193ebc4
> --- /dev/null
> +++ b/src/glsl/glcpp/tests/122-redefine-whitespace.c.expected
> @@ -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
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> --
> 2.0.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>


More information about the mesa-dev mailing list