From 0ed61257253fc0df1dde9042cb0e7fe22d58077a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 31 Mar 2010 09:29:33 -1000 Subject: [PATCH] Test that const declarations include initializers. Fixes dataType6.frag, and also array2.frag for an unexpected but valid reason. --- ast_to_hir.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp index 375955d0332..c9aa91e7f0f 100644 --- a/ast_to_hir.cpp +++ b/ast_to_hir.cpp @@ -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 -- 2.30.2