fa->offset = smem.offset;
fa->idx = smem.idx;
fa->expr = aa->addr;
+ fa->field = "data";
aa->addr = (AstTyped *) fa;
aa->type = aa->addr->type->Pointer.elem;
}
StructMember smem;
- if (field->token != NULL) {
+ if (field->token != NULL && field->field == NULL) {
+ token_toggle_end(field->token);
+ // CLEANUP: Duplicating the string here isn't the best for effiency,
+ // but it fixes a lot of bugs, so here we are.
+ // - brendanfh 2020/12/08
+ field->field = bh_strdup(semstate.allocator, field->token->text);
token_toggle_end(field->token);
- field->field = field->token->text;
}
if (!type_lookup_member(field->expr->type, field->field, &smem)) {
field->field,
type_get_name(field->expr->type));
- if (field->token != NULL) token_toggle_end(field->token);
return 1;
}
field->idx = smem.idx;
field->type = smem.type;
- if (field->token != NULL) token_toggle_end(field->token);
return 0;
}