From: Iago Toral Quiroga <ito...@igalia.com>

So they can hide declarations with the same name in other scopes.
Otherwise we get a parsing error for things like:

struct S { int val; };
int func (int S) { return S; }

Fixes the following 2 dEQP tests:
dEQP-GLES3.functional.shaders.scoping.valid.function_parameter_hides_struct_type_vertex
dEQP-GLES3.functional.shaders.scoping.valid.function_parameter_hides_struct_type_fragment
---
 src/glsl/glsl_parser.yy | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index 38b560d..e66b80a 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -876,6 +876,7 @@ parameter_declarator:
       $$->type->set_location(@1);
       $$->type->specifier = $1;
       $$->identifier = $2;
+      state->symbols->add_variable(new(state) ir_variable(NULL, $2, 
ir_var_auto));
    }
    | type_specifier any_identifier array_specifier
    {
@@ -887,6 +888,7 @@ parameter_declarator:
       $$->type->specifier = $1;
       $$->identifier = $2;
       $$->array_specifier = $3;
+      state->symbols->add_variable(new(state) ir_variable(NULL, $2, 
ir_var_auto));
    }
    ;
 
-- 
2.4.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to