diff --git a/collects/tests/typed-racket/fail/pr13446.rkt b/collects/tests/typed-racket/fail/pr13446.rkt new file mode 100644 index 00000000..7cc64811 --- /dev/null +++ b/collects/tests/typed-racket/fail/pr13446.rkt @@ -0,0 +1,12 @@ +#; +(exn-pred #rx"blaming: top-level") +#lang racket/load + +(module a typed/racket + (provide p) + (: p (Parameterof String Index)) + (define p (make-parameter 0 string-length))) + +(require 'a) +(p 0) + diff --git a/collects/typed-racket/private/type-contract.rkt b/collects/typed-racket/private/type-contract.rkt index 9f087587..0cdd4435 100644 --- a/collects/typed-racket/private/type-contract.rkt +++ b/collects/typed-racket/private/type-contract.rkt @@ -422,7 +422,7 @@ ;; TODO Is this sound? [(Param: in out) (set-impersonator!) - #`(parameter/c #,(t->c out))] + #`(parameter/c #,(t->c in) #,(t->c out))] [(Hashtable: k v) (when (equal? kind flat-sym) (exit (fail))) #`(hash/c #,(t->c k #:kind chaperone-sym) #,(t->c v) #:immutable 'dont-care)]