On 10/25/2012 07:40 AM, jfons...@vmware.com wrote:
From: José Fonseca<jfons...@vmware.com>
---
.../glsl2/comment-continuation-preprocessor.frag | 34 ++++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644
tests/glslparsertest/glsl2/comment-continuation-preprocessor.frag
diff --git a/tests/glslparsertest/glsl2/comment-continuation-preprocessor.frag
b/tests/glslparsertest/glsl2/comment-continuation-preprocessor.frag
new file mode 100644
index 0000000..21b889b
--- /dev/null
+++ b/tests/glslparsertest/glsl2/comment-continuation-preprocessor.frag
@@ -0,0 +1,34 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.20
+//
+// [end config]
+//
+// GLSL specification states that
+//
+// Removal of new lines by the line-continuation character ( \ ) logically
+// occurs before comments are processed.
+//
+// GNU cpp does the same. However NVIDIA accepts the shader below.
+//
+// This was seen with MindCAD 3D Viewer.
+//
+
+#define DECLARE_FOO() \
+ void foo(out vec4 color) \
+ { \
+ color = vec4(0, 1, 0, 1); \
+ \
+// if (0) \
+// { \
+// color = vec4(0, 0, 1, 1) ; \
+// } \
+ }
+
+DECLARE_FOO()
+
+void main()
+{
+ foo(gl_FragColor);
+}
+
I might beef-up the comment to point out that the first // in the
macro effectively makes the rest of the macro's characters go away,
and hence, produces a compilation error.
Reviewed-by: Brian Paul <bri...@vmware.com>
_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit