Test that const declarations include initializers.
authorEric Anholt <eric@anholt.net>
Wed, 31 Mar 2010 19:29:33 +0000 (09:29 -1000)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 31 Mar 2010 20:17:23 +0000 (13:17 -0700)
Fixes dataType6.frag, and also array2.frag for an unexpected but valid
reason.

ast_to_hir.cpp

index 375955d0332fa28eff2c004faf85cb13fc57a5a9..c9aa91e7f0f1e2964b4af1d47fb6a293202644a7 100644 (file)
@@ -1329,6 +1329,17 @@ ast_declarator_list::hir(exec_list *instructions,
         }
       }
 
+      /* From page 23 (page 29 of the PDF) of the GLSL 1.10 spec:
+       *
+       *     "It is an error to write to a const variable outside of
+       *      its declaration, so they must be initialized when
+       *      declared."
+       */
+      if (this->type->qualifier.constant && decl->initializer == NULL) {
+        _mesa_glsl_error(& loc, state,
+                         "const declaration of `%s' must be initialized");
+      }
+
       /* Add the vairable to the symbol table after processing the initializer.
        * This differs from most C-like languages, but it follows the GLSL
        * specification.  From page 28 (page 34 of the PDF) of the GLSL 1.50