Commit d0e10aa3 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

widl: Store the type for casts and sizeof() expressions as a decl_spec_t.

parent 1419a068
......@@ -202,7 +202,7 @@ expr_t *make_exprt(enum expr_type type, var_t *var, expr_t *expr)
e = xmalloc(sizeof(expr_t));
e->type = type;
e->ref = expr;
e->u.tref = tref;
e->u.tref = var->declspec;
e->is_const = FALSE;
if (type == EXPR_SIZEOF)
{
......@@ -591,7 +591,7 @@ static struct expression_type resolve_expression(const struct expr_loc *expr_loc
break;
case EXPR_CAST:
result = resolve_expression(expr_loc, cont_type, e->ref);
result.type = e->u.tref;
result.type = e->u.tref.type;
break;
case EXPR_SIZEOF:
result.is_temporary = FALSE;
......@@ -759,13 +759,13 @@ void write_expr(FILE *h, const expr_t *e, int brackets,
break;
case EXPR_CAST:
fprintf(h, "(");
write_type_decl(h, e->u.tref, NULL);
write_type_decl(h, e->u.tref.type, NULL);
fprintf(h, ")");
write_expr(h, e->ref, 1, toplevel, toplevel_prefix, cont_type, local_var_prefix);
break;
case EXPR_SIZEOF:
fprintf(h, "sizeof(");
write_type_decl(h, e->u.tref, NULL);
write_type_decl(h, e->u.tref.type, NULL);
fprintf(h, ")");
break;
case EXPR_SHL:
......@@ -917,7 +917,7 @@ int compare_expr(const expr_t *a, const expr_t *b)
return ret;
return compare_expr(a->u.ext, b->u.ext);
case EXPR_CAST:
ret = compare_type(a->u.tref, b->u.tref);
ret = compare_type(a->u.tref.type, b->u.tref.type);
if (ret != 0)
return ret;
/* Fall through. */
......@@ -929,7 +929,7 @@ int compare_expr(const expr_t *a, const expr_t *b)
case EXPR_POS:
return compare_expr(a->ref, b->ref);
case EXPR_SIZEOF:
return compare_type(a->u.tref, b->u.tref);
return compare_type(a->u.tref.type, b->u.tref.type);
case EXPR_VOID:
return 0;
}
......
......@@ -319,7 +319,7 @@ struct _expr_t {
double dval;
const char *sval;
const expr_t *ext;
type_t *tref;
decl_spec_t tref;
} u;
const expr_t *ext2;
int is_const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment