[Piglit] [PATCH 11/11] glsl-1.10: Test that returning void from a void function is illegal.

Matt Turner mattst88 at gmail.com
Fri May 24 18:28:08 PDT 2013


---
 .../spec/glsl-1.10/compiler/expressions/return-01.vert | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/tests/spec/glsl-1.10/compiler/expressions/return-01.vert b/tests/spec/glsl-1.10/compiler/expressions/return-01.vert
index cf5a08b..e1ef736 100644
--- a/tests/spec/glsl-1.10/compiler/expressions/return-01.vert
+++ b/tests/spec/glsl-1.10/compiler/expressions/return-01.vert
@@ -1,8 +1,22 @@
 // [config]
-// expect_result: pass
+// expect_result: fail
 // glsl_version: 1.10
 // [end config]
 
+/* The ARB_shading_language_420pack, GLSL ES 3.0, and GLSL 4.20
+ * specs add a clarification:
+ *
+ *     "A void function can only use return without a return argument, even if
+ *      the return argument has void type. Return statements only accept values:
+ *
+ *          void func1() { }
+ *          void func2() { return func1(); } // illegal return statement"
+ *
+ * Verify that returning void from a void function is illegal. Since it is a
+ * clarification rather than a spec change, this behavior is expected even
+ * without ARB_shading_language_420pack or before GLSL ES 3.0 or GLSL 4.20.
+ */
+
 #ifdef GL_ES
 precision mediump float;
 #endif
@@ -10,8 +24,6 @@ precision mediump float;
 void A(int i) { }
 
 void B(int i) {
-	// This is crazy, but not technically illegal.  The value of A(i) has
-	// void type, and the return type of the function is void.
 	return A(i);
 }
 
-- 
1.8.1.5



More information about the Piglit mailing list