Mesa (glsl2): glsl2: Reject return types with qualifiers.

Ian Romanick idr at kemper.freedesktop.org
Tue Jun 29 11:15:11 PDT 2010


Module: Mesa
Branch: glsl2
Commit: ac04c257e31fe012dac750bcf5bf3134ba07ebdc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac04c257e31fe012dac750bcf5bf3134ba07ebdc

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Jun 29 00:48:10 2010 -0700

glsl2: Reject return types with qualifiers.

Fixes piglit test return-qualifier.frag.

---

 src/glsl/ast_to_hir.cpp |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 4522864..5a13b74 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -1984,6 +1984,7 @@ ast_function::hir(exec_list *instructions,
    ir_function_signature *sig = NULL;
    exec_list hir_parameters;
 
+   const char *const name = identifier;
 
    /* Convert the list of function parameters to HIR now so that they can be
     * used below to compare this function's signature with previously seen
@@ -1999,11 +2000,19 @@ ast_function::hir(exec_list *instructions,
 
    assert(return_type != NULL);
 
+   /* From page 56 (page 62 of the PDF) of the GLSL 1.30 spec:
+    * "No qualifier is allowed on the return type of a function."
+    */
+   if (this->return_type->has_qualifiers()) {
+      YYLTYPE loc = this->get_location();
+      _mesa_glsl_error(& loc, state,
+		       "function `%s' return type has qualifiers", name);
+   }
+
    /* Verify that this function's signature either doesn't match a previously
     * seen signature for a function with the same name, or, if a match is found,
     * that the previously seen signature does not have an associated definition.
     */
-   const char *const name = identifier;
    f = state->symbols->get_function(name);
    if (f != NULL) {
       ir_function_signature *sig = f->exact_matching_signature(&hir_parameters);



More information about the mesa-commit mailing list