mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/hlsl: Concatenate nested initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com> Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
bed085cf9a
commit
d9dc1a4554
@ -2408,6 +2408,7 @@ static bool add_method_call(struct hlsl_ctx *ctx, struct list *instrs, struct hl
|
|||||||
%type <function> func_prototype
|
%type <function> func_prototype
|
||||||
|
|
||||||
%type <initializer> complex_initializer
|
%type <initializer> complex_initializer
|
||||||
|
%type <initializer> complex_initializer_list
|
||||||
%type <initializer> func_arguments
|
%type <initializer> func_arguments
|
||||||
%type <initializer> initializer_expr_list
|
%type <initializer> initializer_expr_list
|
||||||
|
|
||||||
@ -3215,15 +3216,36 @@ complex_initializer:
|
|||||||
$$.args[0] = node_from_list($1);
|
$$.args[0] = node_from_list($1);
|
||||||
$$.instrs = $1;
|
$$.instrs = $1;
|
||||||
}
|
}
|
||||||
| '{' initializer_expr_list '}'
|
| '{' complex_initializer_list '}'
|
||||||
{
|
{
|
||||||
$$ = $2;
|
$$ = $2;
|
||||||
}
|
}
|
||||||
| '{' initializer_expr_list ',' '}'
|
| '{' complex_initializer_list ',' '}'
|
||||||
{
|
{
|
||||||
$$ = $2;
|
$$ = $2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
complex_initializer_list:
|
||||||
|
complex_initializer
|
||||||
|
| complex_initializer_list ',' complex_initializer
|
||||||
|
{
|
||||||
|
struct hlsl_ir_node **new_args;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
$$ = $1;
|
||||||
|
if (!(new_args = hlsl_realloc(ctx, $$.args, ($$.args_count + $3.args_count) * sizeof(*$$.args))))
|
||||||
|
{
|
||||||
|
free_parse_initializer(&$$);
|
||||||
|
free_parse_initializer(&$3);
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
$$.args = new_args;
|
||||||
|
for (i = 0; i < $3.args_count; ++i)
|
||||||
|
$$.args[$$.args_count++] = $3.args[i];
|
||||||
|
list_move_tail($$.instrs, $3.instrs);
|
||||||
|
free_parse_initializer(&$3);
|
||||||
|
}
|
||||||
|
|
||||||
initializer_expr:
|
initializer_expr:
|
||||||
assignment_expr
|
assignment_expr
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user