vkd3d-shader/hlsl: Return an error expression when a function is used as a variable.

This commit is contained in:
Elizabeth Figura 2024-08-29 12:48:23 -05:00 committed by Henri Verbeet
parent c553c45f00
commit e060b47330
Notes: Henri Verbeet 2024-12-03 14:56:02 +01:00
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1233

View File

@ -9007,18 +9007,25 @@ primary_expr:
struct hlsl_ir_load *load; struct hlsl_ir_load *load;
struct hlsl_ir_var *var; struct hlsl_ir_var *var;
if (!(var = hlsl_get_var(ctx->cur_scope, $1))) if ((var = hlsl_get_var(ctx->cur_scope, $1)))
{ {
hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED, "Variable \"%s\" is not defined.", $1);
vkd3d_free($1);
YYABORT;
}
vkd3d_free($1); vkd3d_free($1);
if (!(load = hlsl_new_var_load(ctx, var, &@1))) if (!(load = hlsl_new_var_load(ctx, var, &@1)))
YYABORT; YYABORT;
if (!($$ = make_block(ctx, &load->node))) if (!($$ = make_block(ctx, &load->node)))
YYABORT; YYABORT;
} }
else
{
hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED, "Variable \"%s\" is not defined.", $1);
vkd3d_free($1);
if (!($$ = make_empty_block(ctx)))
YYABORT;
$$->value = ctx->error_instr;
}
}
| '(' expr ')' | '(' expr ')'
{ {
$$ = $2; $$ = $2;