glsl/glcpp: Promote "extra token at end of directive" from warning to error
authorCarl Worth <cworth@cworth.org>
Fri, 13 Jun 2014 22:40:42 +0000 (15:40 -0700)
committerCarl Worth <cworth@cworth.org>
Wed, 9 Jul 2014 19:05:14 +0000 (12:05 -0700)
We've always warned about this case, but a recent confromance test expects
this to be an error that causes compilation to fail. Make it so.

Also add a "make check" test to ensure these errors are generated.

This fixes the following Khronos GLES3 conformance tests:

invalid_conditionals.tokens_after_ifdef_vertex
invalid_conditionals.tokens_after_ifdef_fragment
invalid_conditionals.tokens_after_ifndef_vertex
invalid_conditionals.tokens_after_ifndef_fragment

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/glcpp/glcpp-parse.y
src/glsl/glcpp/tests/126-garbage-after-directive.c [new file with mode: 0644]
src/glsl/glcpp/tests/126-garbage-after-directive.c.expected [new file with mode: 0644]

index 267940156c4c7fd111a3e5960e978506090e61ce..21c85b410f5e01fd2fe72b3552a7ddff3ffee3e7 100644 (file)
@@ -625,7 +625,7 @@ replacement_list:
 junk:
        /* empty */
 |      pp_tokens {
-               glcpp_warning(&@1, parser, "extra tokens at end of directive");
+               glcpp_error(&@1, parser, "extra tokens at end of directive");
        }
 ;
 
diff --git a/src/glsl/glcpp/tests/126-garbage-after-directive.c b/src/glsl/glcpp/tests/126-garbage-after-directive.c
new file mode 100644 (file)
index 0000000..4c0d290
--- /dev/null
@@ -0,0 +1,5 @@
+#ifdef MACRO garbage
+#endif
+
+#ifndef MORE garbage
+#endif
diff --git a/src/glsl/glcpp/tests/126-garbage-after-directive.c.expected b/src/glsl/glcpp/tests/126-garbage-after-directive.c.expected
new file mode 100644 (file)
index 0000000..95a9e61
--- /dev/null
@@ -0,0 +1,8 @@
+0:1(15): preprocessor error: extra tokens at end of directive
+0:4(14): preprocessor error: extra tokens at end of directive
+
+
+
+
+
+