return val->ref != NULL;
}
+ static struct type *reference_fieldref(struct type *t, struct parse_context *c,
+ struct fieldref *f, struct value **vp)
+ {
+ struct type *rt = t->reference.referent;
+
+ if (rt->fieldref) {
+ if (vp)
+ *vp = (*vp)->ref;
+ return rt->fieldref(rt, c, f, vp);
+ }
+ type_err(c, "error: field reference on %1 is not supported",
+ f->left, rt, 0, NULL);
+ return Tnone;
+ }
+
+
static struct type reference_prototype = {
.print_type = reference_print_type,
.cmp_eq = reference_cmp,
.test = reference_test,
.free = reference_free,
.compat = reference_compat,
+ .fieldref = reference_fieldref,
.size = sizeof(void*),
.align = sizeof(void*),
};