mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 19:00:13 +01:00
glsl: Add function parameters to the parser symbol table.
In a shader such as:
struct S { float f; }
float identity(float S) { return S; }
we would think that "S" in "return S" referred to a structure, even
though it's shadowed by the "float S" parameter in the inner struct.
This led to the parser's grammar seeing TYPE_IDENTIFIER and getting
confused.
Fixes dEQP-GLES2.functional.shaders.scoping.valid.
function_parameter_hides_struct_type_{vertex,fragment}.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
parent
c4960068d5
commit
af41c0b7e0
1 changed files with 2 additions and 0 deletions
|
|
@ -894,6 +894,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
|
||||
{
|
||||
|
|
@ -905,6 +906,7 @@ parameter_declarator:
|
|||
$$->type->specifier = $1;
|
||||
$$->identifier = $2;
|
||||
$$->array_specifier = $3;
|
||||
state->symbols->add_variable(new(state) ir_variable(NULL, $2, ir_var_auto));
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue