From: Ian Romanick Date: Wed, 31 Mar 2010 19:26:03 +0000 (-0700) Subject: Slightly refector checks for declarations that must be at global scope X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e1c1a3f3bd139da47a1184a8c69af6239973a90c;p=mesa.git Slightly refector checks for declarations that must be at global scope --- diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp index 1ebcf45e701..7525461272d 100644 --- a/ast_to_hir.cpp +++ b/ast_to_hir.cpp @@ -1176,11 +1176,6 @@ ast_declarator_list::hir(exec_list *instructions, var = new ir_variable(var_type, decl->identifier); - /* FINISHME: Variables that are attribute, uniform, varying, in, or - * FINISHME: out varibles must be declared either at global scope or - * FINISHME: in a parameter list (in and out only). - */ - apply_type_qualifier_to_variable(& this->type->qualifier, var, state, & loc); @@ -1212,15 +1207,18 @@ ast_declarator_list::hir(exec_list *instructions, instructions->push_tail(var); - if (this->type->qualifier.attribute - && (state->current_function != NULL)) { - _mesa_glsl_error(& loc, state, - "attribute variable `%s' must be declared at global " - "scope", - var->name); - } - - if ((var->mode == ir_var_in) && (state->current_function == NULL)) { + if (state->current_function != NULL) { + /* FINISHME: Variables that are uniform, varying, in, or + * FINISHME: out varibles must be declared either at global scope or + * FINISHME: in a parameter list (in and out only). + */ + if (this->type->qualifier.attribute) { + _mesa_glsl_error(& loc, state, + "attribute variable `%s' must be declared at " + "global scope", + var->name); + } + } else if (var->mode == ir_var_in) { if (state->target == vertex_shader) { bool error_emitted = false;