diff --git a/collects/racket/contract/private/misc.rkt b/collects/racket/contract/private/misc.rkt index 64c3d93692..eaead9fc4a 100644 --- a/collects/racket/contract/private/misc.rkt +++ b/collects/racket/contract/private/misc.rkt @@ -1014,7 +1014,8 @@ '(expected: "~s" given: "~e") (contract-name ctc) val)) - (proxy val proj1 proj2 call/cc-guard call/cc-proxy)))) + (proxy val proj1 proj2 call/cc-guard call/cc-proxy + impersonator-prop:contracted ctc)))) (define ((prompt-tag/c-first-order ctc) v) (continuation-prompt-tag? v)) @@ -1074,7 +1075,8 @@ '(expected: "~s" given: "~e") (contract-name ctc) val)) - (proxy val proj1 proj2)))) + (proxy val proj1 proj2 + impersonator-prop:contracted ctc)))) (define ((continuation-mark-key/c-first-order ctc) v) (continuation-mark-key? v)) diff --git a/collects/tests/racket/contract-test.rktl b/collects/tests/racket/contract-test.rktl index 0286c604f5..b5d7573dca 100644 --- a/collects/tests/racket/contract-test.rktl +++ b/collects/tests/racket/contract-test.rktl @@ -4218,6 +4218,15 @@ pt)]) (do-test))) + (test/spec-passed/result + 'prompt-tag/c-has-contract + '(let ([pt (contract (prompt-tag/c string? number?) + (make-continuation-prompt-tag) + 'pos + 'neg)]) + (has-contract? pt)) + #t) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; continuation-mark-key/c @@ -4369,6 +4378,16 @@ 'neg)]) (continuation-mark-set-first #f ctc-mark))) + (test/spec-passed/result + 'continuation-mark-key/c-has-contract + '(let* ([mark (make-continuation-mark-key)] + [ctc-mark (contract (continuation-mark-key/c number?) + mark + 'pos + 'neg)]) + (has-contract? ctc-mark)) + #t) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; make-contract