Richard Pospesel : widl: Pass a decl_spec_t to type_new_alias().

Alexandre Julliard julliard at winehq.org
Fri Aug 16 17:30:49 CDT 2019


Module: wine
Branch: master
Commit: f131795b30476ed2483649c49501dd00a97a8119
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f131795b30476ed2483649c49501dd00a97a8119

Author: Richard Pospesel <richard at torproject.org>
Date:   Thu Aug 15 20:13:21 2019 -0500

widl: Pass a decl_spec_t to type_new_alias().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/widl/parser.y   | 8 +++++---
 tools/widl/typetree.c | 4 ++--
 tools/widl/typetree.h | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index f35d671..038b407 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -1188,7 +1188,8 @@ static void decl_builtin_basic(const char *name, enum type_basic_type type)
 
 static void decl_builtin_alias(const char *name, type_t *t)
 {
-  reg_type(type_new_alias(t, name), name, NULL, 0);
+    const decl_spec_t ds = {.type = t};
+    reg_type(type_new_alias(&ds, name), name, NULL, 0);
 }
 
 void init_types(void)
@@ -1802,7 +1803,8 @@ static declarator_t *make_declarator(var_t *var)
 
 static type_t *make_safearray(type_t *type)
 {
-    const decl_spec_t ds = {.type = type_new_alias(type, "SAFEARRAY")};
+    decl_spec_t ds = {.type = type};
+    ds.type = type_new_alias(&ds, "SAFEARRAY");
     return type_new_array(NULL, &ds, TRUE, 0, NULL, NULL, FC_RP);
 }
 
@@ -1975,7 +1977,7 @@ static type_t *reg_typedefs(decl_spec_t *decl_spec, declarator_list_t *decls, at
                     cur->loc_info.line_number);
 
       name = declare_var(attrs, decl_spec, decl, 0);
-      cur = type_new_alias(name->declspec.type, name->name);
+      cur = type_new_alias(&name->declspec, name->name);
       cur->attrs = attrs;
 
       if (is_incomplete(cur))
diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index 3e9ac89..ef9a669 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -184,13 +184,13 @@ type_t *type_new_pointer(unsigned char pointer_default, type_t *ref, attr_list_t
     return t;
 }
 
-type_t *type_new_alias(type_t *t, const char *name)
+type_t *type_new_alias(const decl_spec_t *t, const char *name)
 {
     type_t *a = make_type(TYPE_ALIAS);
 
     a->name = xstrdup(name);
     a->attrs = NULL;
-    a->details.alias.aliasee.type = t;
+    a->details.alias.aliasee = *t;
     init_loc_info(&a->loc_info);
 
     return a;
diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h
index 9453e9d..6377614 100644
--- a/tools/widl/typetree.h
+++ b/tools/widl/typetree.h
@@ -31,7 +31,7 @@ enum name_type {
 
 type_t *type_new_function(var_list_t *args);
 type_t *type_new_pointer(unsigned char pointer_default, type_t *ref, attr_list_t *attrs);
-type_t *type_new_alias(type_t *t, const char *name);
+type_t *type_new_alias(const decl_spec_t *t, const char *name);
 type_t *type_new_module(char *name);
 type_t *type_new_array(const char *name, const decl_spec_t *element, int declptr,
                        unsigned int dim, expr_t *size_is, expr_t *length_is,




More information about the wine-cvs mailing list