[PATCH 09/18] widl: type_new_bitfield function now takes decl_spec_t for field rather than type_t

Richard Pospesel richard at torproject.org
Wed Jun 5 20:34:06 CDT 2019


Signed-off-by: Richard Pospesel <richard at torproject.org>
---
 tools/widl/parser.y   | 2 +-
 tools/widl/typetree.c | 6 +++---
 tools/widl/typetree.h | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index 5977d85887..8a1e5b21aa 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -1695,7 +1695,7 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const decl
   }
 
   if (decl->bits)
-    v->declspec.type = type_new_bitfield(v->declspec.type, decl->bits);
+    v->declspec.type = type_new_bitfield(&v->declspec, decl->bits);
 
   return v;
 }
diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index 63c674798c..6e72ebe34b 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -397,11 +397,11 @@ static int is_valid_bitfield_type(const type_t *type)
     }
 }
 
-type_t *type_new_bitfield(type_t *field, const expr_t *bits)
+type_t *type_new_bitfield(const decl_spec_t *field, const expr_t *bits)
 {
     type_t *t;
 
-    if (!is_valid_bitfield_type(field))
+    if (!is_valid_bitfield_type(field->type))
         error_loc("bit-field has invalid type\n");
 
     if (bits->cval < 0)
@@ -410,7 +410,7 @@ type_t *type_new_bitfield(type_t *field, const expr_t *bits)
     /* FIXME: validate bits->cval <= memsize(field) * 8 */
 
     t = make_type(TYPE_BITFIELD);
-    t->details.bitfield.field.type = field;
+    t->details.bitfield.field = *field;
     t->details.bitfield.bits = bits;
     return t;
 }
diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h
index aece5756ef..3f987e0d90 100644
--- a/tools/widl/typetree.h
+++ b/tools/widl/typetree.h
@@ -44,7 +44,7 @@ type_t *type_new_enum(const char *name, struct namespace *namespace, int defined
 type_t *type_new_struct(char *name, struct namespace *namespace, int defined, var_list_t *fields);
 type_t *type_new_nonencapsulated_union(const char *name, int defined, var_list_t *fields);
 type_t *type_new_encapsulated_union(char *name, var_t *switch_field, var_t *union_field, var_list_t *cases);
-type_t *type_new_bitfield(type_t *field_type, const expr_t *bits);
+type_t *type_new_bitfield(const decl_spec_t *field_type, const expr_t *bits);
 void type_interface_define(type_t *iface, type_t *inherit, statement_list_t *stmts);
 void type_dispinterface_define(type_t *iface, var_list_t *props, var_list_t *methods);
 void type_dispinterface_define_from_iface(type_t *dispiface, type_t *iface);
-- 
2.17.1




More information about the wine-devel mailing list