Matteo Bruni : d3dcompiler: Use location information in add_modifier().

Alexandre Julliard julliard at winehq.org
Thu Jul 12 18:00:33 CDT 2012


Module: wine
Branch: master
Commit: 2b2b8501060e6594424700bf543a99aea50a3704
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2b2b8501060e6594424700bf543a99aea50a3704

Author: Matteo Bruni <mbruni at codeweavers.com>
Date:   Thu Jul 12 16:01:36 2012 +0200

d3dcompiler: Use location information in add_modifier().

---

 dlls/d3dcompiler_43/hlsl.y |   60 ++++++++++++++++++++++----------------------
 1 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index cadcfc9..cf0c7b5 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -146,25 +146,7 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
     return TRUE;
 }
 
-static DWORD add_modifier(DWORD modifiers, DWORD mod)
-{
-    if (modifiers & mod)
-    {
-        hlsl_message("Line %u: modifier '%s' already specified.\n",
-                     hlsl_ctx.line_no, debug_modifiers(mod));
-        set_parse_status(&hlsl_ctx.status, PARSE_ERR);
-        return modifiers;
-    }
-    if (mod & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR)
-            && modifiers & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR))
-    {
-        hlsl_message("Line %u: more than one matrix majority keyword.\n",
-                hlsl_ctx.line_no);
-        set_parse_status(&hlsl_ctx.status, PARSE_ERR);
-        return modifiers;
-    }
-    return modifiers | mod;
-}
+static DWORD add_modifier(DWORD modifiers, DWORD mod, const struct YYLTYPE *loc);
 
 static unsigned int components_count_expr_list(struct list *list)
 {
@@ -691,47 +673,47 @@ var_modifiers:            /* Empty */
                             }
                         | KW_EXTERN var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_EXTERN);
+                                $$ = add_modifier($2, HLSL_STORAGE_EXTERN, &@1);
                             }
                         | KW_NOINTERPOLATION var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_NOINTERPOLATION);
+                                $$ = add_modifier($2, HLSL_STORAGE_NOINTERPOLATION, &@1);
                             }
                         | KW_PRECISE var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_MODIFIER_PRECISE);
+                                $$ = add_modifier($2, HLSL_MODIFIER_PRECISE, &@1);
                             }
                         | KW_SHARED var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_SHARED);
+                                $$ = add_modifier($2, HLSL_STORAGE_SHARED, &@1);
                             }
                         | KW_GROUPSHARED var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_GROUPSHARED);
+                                $$ = add_modifier($2, HLSL_STORAGE_GROUPSHARED, &@1);
                             }
                         | KW_STATIC var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_STATIC);
+                                $$ = add_modifier($2, HLSL_STORAGE_STATIC, &@1);
                             }
                         | KW_UNIFORM var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_UNIFORM);
+                                $$ = add_modifier($2, HLSL_STORAGE_UNIFORM, &@1);
                             }
                         | KW_VOLATILE var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_STORAGE_VOLATILE);
+                                $$ = add_modifier($2, HLSL_STORAGE_VOLATILE, &@1);
                             }
                         | KW_CONST var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_MODIFIER_CONST);
+                                $$ = add_modifier($2, HLSL_MODIFIER_CONST, &@1);
                             }
                         | KW_ROW_MAJOR var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_MODIFIER_ROW_MAJOR);
+                                $$ = add_modifier($2, HLSL_MODIFIER_ROW_MAJOR, &@1);
                             }
                         | KW_COLUMN_MAJOR var_modifiers
                             {
-                                $$ = add_modifier($2, HLSL_MODIFIER_COLUMN_MAJOR);
+                                $$ = add_modifier($2, HLSL_MODIFIER_COLUMN_MAJOR, &@1);
                             }
 
 complex_initializer:      initializer_expr
@@ -995,6 +977,24 @@ static void set_location(struct source_location *loc, const struct YYLTYPE *l)
     loc->col = l->first_column;
 }
 
+static DWORD add_modifier(DWORD modifiers, DWORD mod, const struct YYLTYPE *loc)
+{
+    if (modifiers & mod)
+    {
+        hlsl_report_message(hlsl_ctx.source_file, loc->first_line, loc->first_column, HLSL_LEVEL_ERROR,
+                "modifier '%s' already specified", debug_modifiers(mod));
+        return modifiers;
+    }
+    if (mod & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR)
+            && modifiers & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR))
+    {
+        hlsl_report_message(hlsl_ctx.source_file, loc->first_line, loc->first_column, HLSL_LEVEL_ERROR,
+                "more than one matrix majority keyword");
+        return modifiers;
+    }
+    return modifiers | mod;
+}
+
 struct bwriter_shader *parse_hlsl(enum shader_type type, DWORD major, DWORD minor,
         const char *entrypoint, char **messages)
 {




More information about the wine-cvs mailing list