[PATCH 4/5] d3dcompiler: Fail if modifiers are applied to a function.
Zebediah Figura
z.figura12 at gmail.com
Thu Mar 12 22:20:15 CDT 2020
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
dlls/d3dcompiler_43/hlsl.y | 7 +++++++
dlls/d3dcompiler_43/tests/hlsl_d3d9.c | 5 +++++
2 files changed, 12 insertions(+)
diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index 498ca4bb59d..59e0df9d8c0 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -1322,8 +1322,15 @@ func_declaration: func_prototype compound_statement
pop_scope(&hlsl_ctx);
}
+ /* var_modifiers is necessary to avoid shift/reduce conflicts. */
func_prototype: var_modifiers type var_identifier '(' parameters ')' colon_attribute
{
+ if ($1)
+ {
+ hlsl_report_message(get_location(&@1), HLSL_LEVEL_ERROR,
+ "unexpected modifiers on a function");
+ YYABORT;
+ }
if (get_variable(hlsl_ctx.globals, $3))
{
hlsl_report_message(get_location(&@3),
diff --git a/dlls/d3dcompiler_43/tests/hlsl_d3d9.c b/dlls/d3dcompiler_43/tests/hlsl_d3d9.c
index 0e50084fb91..96823750eea 100644
--- a/dlls/d3dcompiler_43/tests/hlsl_d3d9.c
+++ b/dlls/d3dcompiler_43/tests/hlsl_d3d9.c
@@ -924,6 +924,11 @@ static void test_fail(void)
" float a[(x = 2)];\n"
" return float4(0, 0, 0, 0);\n"
"}",
+
+ "uniform float4 test() : SV_TARGET\n"
+ "{\n"
+ " return float4(0, 0, 0, 0);\n"
+ "}",
};
static const char *targets[] = {"ps_2_0", "ps_3_0", "ps_4_0"};
--
2.25.1
More information about the wine-devel
mailing list