repair impersonator-porperty predicate and accessor
Repair for b923269569
, helpfully reported again by Scott
This commit is contained in:
parent
5749d4080c
commit
332b380ca2
|
@ -1730,6 +1730,9 @@
|
|||
(test #t blue? (make-a (chaperone-struct a1 struct:a prop:blue 'color) 2))
|
||||
(test 'color blue-ref (make-a (chaperone-struct a1 struct:a prop:blue 'color) 2))
|
||||
|
||||
(test #f blue? a1)
|
||||
(err/rt-test (blue-ref a1))
|
||||
|
||||
(void)))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
|
|
@ -1022,9 +1022,11 @@ static Scheme_Object *prop_pred(int argc, Scheme_Object **args, Scheme_Object *p
|
|||
be via `prop:impersonator-of`: */
|
||||
Scheme_Object *procs;
|
||||
procs = scheme_struct_type_property_ref(scheme_impersonator_of_property, v);
|
||||
if (procs)
|
||||
if (procs) {
|
||||
v = scheme_apply_impersonator_of(0, procs, v);
|
||||
else
|
||||
if (!v)
|
||||
return scheme_false;
|
||||
} else
|
||||
return scheme_false;
|
||||
} else
|
||||
break;
|
||||
|
@ -1179,6 +1181,8 @@ static Scheme_Object *do_chaperone_prop_accessor(const char *who, Scheme_Object
|
|||
procs = scheme_struct_type_property_ref(scheme_impersonator_of_property, arg);
|
||||
if (procs) {
|
||||
arg = scheme_apply_impersonator_of(0, procs, arg);
|
||||
if (!arg)
|
||||
return NULL;
|
||||
/* loop to try again */
|
||||
} else {
|
||||
/* an impersonator property lives at the impersonator/chaperone level, only: */
|
||||
|
|
Loading…
Reference in New Issue
Block a user