diff --git a/collects/mzlib/contract.ss b/collects/mzlib/contract.ss index bf96a1c..30abf6d 100644 --- a/collects/mzlib/contract.ss +++ b/collects/mzlib/contract.ss @@ -85,4 +85,4 @@ (define (flat-contract/predicate? pred) (or (flat-contract? pred) (and (procedure? pred) - (procedure-arity-includes? pred 1)))) \ No newline at end of file + (procedure-arity-includes? pred 1)))) diff --git a/collects/mzlib/unit.ss b/collects/mzlib/unit.ss index ddbd135..6b2af64 100644 --- a/collects/mzlib/unit.ss +++ b/collects/mzlib/unit.ss @@ -17,7 +17,7 @@ (provide define-signature-form struct open define-signature provide-signature-elements - only except rename import export prefix link tag init-depend extends + only except rename import export prefix link tag init-depend extends contracted unit? (rename :unit unit) define-unit compound-unit define-compound-unit compound-unit/infer define-compound-unit/infer @@ -252,6 +252,13 @@ val-defs stx-defs (append (syntax->list #'(z ...)) ctcs))) + ((x . z) + (and (identifier? #'x) + (module-identifier=? #'x #'contracted)) + (raise-syntax-error + 'define-signature + "expected a list of [id contract] pairs after the contracted keyword" + (car sig-exprs))) ((x . y) (and (identifier? #'x) (or (module-identifier=? #'x #'define-values)