Commit 6b2ecb50 authored by Matteo Bruni's avatar Matteo Bruni Committed by Alexandre Julliard

d3dcompiler: Parse struct dereferences.

parent f10e0d4e
......@@ -1795,7 +1795,36 @@ postfix_expr: primary_expr
struct source_location loc;
set_location(&loc, &@2);
if ($1->data_type->type <= HLSL_CLASS_LAST_NUMERIC)
if ($1->data_type->type == HLSL_CLASS_STRUCT)
{
struct hlsl_type *type = $1->data_type;
struct hlsl_struct_field *field;
$$ = NULL;
LIST_FOR_EACH_ENTRY(field, type->e.elements, struct hlsl_struct_field, entry)
{
if (!strcmp($3, field->name))
{
struct hlsl_ir_deref *deref = new_record_deref($1, field);
if (!deref)
{
ERR("Out of memory\n");
return -1;
}
deref->node.loc = loc;
$$ = &deref->node;
break;
}
}
if (!$$)
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"invalid subscript %s", debugstr_a($3));
return 1;
}
}
else if ($1->data_type->type <= HLSL_CLASS_LAST_NUMERIC)
{
struct hlsl_ir_swizzle *swizzle;
......
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