diff --git a/collects/scheme/private/class-internal.ss b/collects/scheme/private/class-internal.ss index d64eebcdeb..f0513acdbf 100644 --- a/collects/scheme/private/class-internal.ss +++ b/collects/scheme/private/class-internal.ss @@ -3695,11 +3695,15 @@ (values (λ (class name) (let* ([p (check-and-get-index 'class-field-accessor class name)] [ref (vector-ref (class-ext-field-refs class) p)]) - (λ (o) (ref ((object-unwrapper o) o))))) + (λ (o) (if (object? o) + (ref ((object-unwrapper o) o)) + (raise-type-error 'class-field-accessor "object" o))))) (λ (class name) (let* ([p (check-and-get-index 'class-field-mutator class name)] [set (vector-ref (class-ext-field-sets class) p)]) - (λ (o v) (set ((object-unwrapper o) o) v))))))) + (λ (o v) (if (object? o) + (set ((object-unwrapper o) o) v) + (raise-type-error 'class-field-mutator "object" o)))))))) (define-struct generic (name applicable))