Fix contract name of parameter/c
Made it more backwards compatible
This commit is contained in:
parent
a2f33f17e9
commit
14c970b490
|
@ -853,11 +853,19 @@
|
||||||
;; (parameter/c in/out-ctc)
|
;; (parameter/c in/out-ctc)
|
||||||
;; (parameter/c in-ctc out-ctc)
|
;; (parameter/c in-ctc out-ctc)
|
||||||
(define/subexpression-pos-prop parameter/c
|
(define/subexpression-pos-prop parameter/c
|
||||||
(λ (in-ctc [out-ctc in-ctc])
|
(case-lambda
|
||||||
(make-parameter/c (coerce-contract 'parameter/c in-ctc)
|
[(in-ctc)
|
||||||
(coerce-contract 'parameter-c out-ctc))))
|
(define ctc (coerce-contract 'parameter/c in-ctc))
|
||||||
|
(make-parameter/c ctc ctc #f)]
|
||||||
|
[(in-ctc out-ctc)
|
||||||
|
(make-parameter/c (coerce-contract 'parameter/c in-ctc)
|
||||||
|
(coerce-contract 'parameter-c out-ctc)
|
||||||
|
#t)]))
|
||||||
|
|
||||||
(define-struct parameter/c (in out)
|
;; in - negative contract
|
||||||
|
;; out - positive contract
|
||||||
|
;; both-supplied? - for backwards compat printing
|
||||||
|
(define-struct parameter/c (in out both-supplied?)
|
||||||
#:omit-define-syntaxes
|
#:omit-define-syntaxes
|
||||||
#:property prop:contract
|
#:property prop:contract
|
||||||
(build-contract-property
|
(build-contract-property
|
||||||
|
@ -880,9 +888,11 @@
|
||||||
(raise-blame-error blame val '(expected "a parameter"))])))))
|
(raise-blame-error blame val '(expected "a parameter"))])))))
|
||||||
|
|
||||||
#:name
|
#:name
|
||||||
(λ (ctc) (build-compound-type-name 'parameter/c
|
(λ (ctc) (apply build-compound-type-name
|
||||||
(parameter/c-in ctc)
|
`(parameter/c ,(parameter/c-in ctc)
|
||||||
(parameter/c-out ctc)))
|
,@(if (parameter/c-both-supplied? ctc)
|
||||||
|
(list (parameter/c-out ctc))
|
||||||
|
(list)))))
|
||||||
#:first-order
|
#:first-order
|
||||||
(λ (ctc)
|
(λ (ctc)
|
||||||
(let ([tst (contract-first-order (parameter/c-out ctc))])
|
(let ([tst (contract-first-order (parameter/c-out ctc))])
|
||||||
|
|
|
@ -12216,7 +12216,7 @@ so that propagation occurs.
|
||||||
(test-name '(list/c (-> boolean? boolean?) integer?)
|
(test-name '(list/c (-> boolean? boolean?) integer?)
|
||||||
(list/c (-> boolean? boolean?) integer?))
|
(list/c (-> boolean? boolean?) integer?))
|
||||||
|
|
||||||
(test-name '(parameter/c integer? integer?) (parameter/c integer?))
|
(test-name '(parameter/c integer?) (parameter/c integer?))
|
||||||
(test-name '(parameter/c integer? string?) (parameter/c integer? string?))
|
(test-name '(parameter/c integer? string?) (parameter/c integer? string?))
|
||||||
|
|
||||||
(test-name '(hash/c symbol? boolean?) (hash/c symbol? boolean?))
|
(test-name '(hash/c symbol? boolean?) (hash/c symbol? boolean?))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user