diff --git a/pkgs/racket-test-core/tests/racket/chaperone.rktl b/pkgs/racket-test-core/tests/racket/chaperone.rktl index 124967bd76..46ca4821d5 100644 --- a/pkgs/racket-test-core/tests/racket/chaperone.rktl +++ b/pkgs/racket-test-core/tests/racket/chaperone.rktl @@ -196,6 +196,15 @@ (test (void) vector-set! b2 1 'fine) (test 'fine vector-ref b 1))) +;; impersonator-of does not imply chaperone-of +(let () + (define vec1 (vector 1 2 3)) + (define vec2 (impersonate-vector vec1 (lambda (v i x) x) (lambda (v i x) x))) + (test #t impersonator-of? vec2 vec1) + (test #f chaperone-of? vec2 vec1) + (test #f impersonator-of? vec1 vec2) + (test #f chaperone-of? vec1 vec2)) + ;; test chaperone-of checks in a chaperone: (let ([b (vector 0)]) (let ([b2 (chaperone-vector b diff --git a/racket/src/cs/rumble/equal.ss b/racket/src/cs/rumble/equal.ss index f1d11b068a..46c3905901 100644 --- a/racket/src/cs/rumble/equal.ss +++ b/racket/src/cs/rumble/equal.ss @@ -42,8 +42,7 @@ (let ([ctx (deeper-context ctx)]) (equal? a2 b ctx)))] [else #f]))] - [(and (eq? mode 'chaperone-of?) - (chaperone? b)) + [(eq? mode 'chaperone-of?) ;; `a` does not include `b`, so give up #f] [else