From: Richard Pospesel Subject: [PATCH 09/18] widl: type_new_bitfield function now takes decl_spec_t for field rather than type_t Message-Id: <20190606013415.23642-9-richard@torproject.org> Date: Wed, 5 Jun 2019 18:34:06 -0700 In-Reply-To: <20190606013415.23642-1-richard@torproject.org> References: <20190606013415.23642-1-richard@torproject.org> Signed-off-by: Richard Pospesel --- 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