diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt index 4001b3db..fcbd9811 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt @@ -148,7 +148,9 @@ (loop t 'both structs-seen kind)) (define (t->c/fun f #:method [method? #f]) (match f - [(Function: (list (top-arr:))) #'(case->)] + [(Function: (list (top-arr:))) + (set-chaperone!) + #'(case->)] [(Function: arrs) (set-chaperone!) ;; Try to generate a single `->*' contract if possible. diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr13746.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr13746.rkt new file mode 100644 index 00000000..d03778a5 --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr13746.rkt @@ -0,0 +1,6 @@ +#; +(exn:pred #rx"Procedure could not be converted to a predicate") +#lang typed/racket + +(define-predicate A? Procedure) +