diff --git a/collects/mzlib/private/unit-contract-syntax.ss b/collects/mzlib/private/unit-contract-syntax.ss index ad6e269f24..88de84cd48 100644 --- a/collects/mzlib/private/unit-contract-syntax.ss +++ b/collects/mzlib/private/unit-contract-syntax.ss @@ -1,7 +1,8 @@ #lang scheme/base -(require stxclass +(require syntax/parse "unit-compiletime.ss" + "unit-keywords.ss" (for-template "unit-keywords.ss")) (provide import-clause/contract export-clause/contract dep-clause @@ -10,9 +11,9 @@ (define-syntax-class sig-id #:attributes () (pattern x - #:declare x (static-of 'signature - (λ (x) - (signature? (set!-trans-extract x)))))) + #:declare x (static (λ (x) + (signature? (set!-trans-extract x))) + 'signature))) (define-syntax-class sig-spec #:literals (prefix rename only except) #:attributes ((name 0)) @@ -28,6 +29,7 @@ #:with name #'s.name)) (define-syntax-class tagged-sig-spec #:literals (tag) + #:auto-nested-attributes #:transparent (pattern s:sig-spec #:with i #f) @@ -40,30 +42,37 @@ (pattern (tag i:identifier s:sig-id))) (define-syntax-class unit/c-clause + #:auto-nested-attributes #:transparent (pattern (s:tagged-sig-id [x:identifier c:expr] ...)) (pattern s:tagged-sig-id ;; allow a non-wrapped sig, which is the same as (sig) #:with (x ...) null #:with (c ...) null)) (define-syntax-class import-clause/c #:literals (import) + #:auto-nested-attributes #:transparent (pattern (import i:unit/c-clause ...))) (define-syntax-class export-clause/c #:literals (export) + #:auto-nested-attributes #:transparent (pattern (export e:unit/c-clause ...))) (define-syntax-class unit/contract-clause + #:auto-nested-attributes #:transparent (pattern (s:tagged-sig-spec [x:identifier c:expr] ...)) (pattern s:tagged-sig-spec ;; allow a non-wrapped sig, which is the same as (sig) #:with (x ...) null #:with (c ...) null)) (define-syntax-class import-clause/contract #:literals (import) + #:auto-nested-attributes #:transparent (pattern (import i:unit/contract-clause ...))) (define-syntax-class export-clause/contract #:literals (export) + #:auto-nested-attributes #:transparent (pattern (export e:unit/contract-clause ...))) (define-syntax-class dep-clause #:literals (init-depend) + #:auto-nested-attributes #:transparent (pattern (init-depend s:tagged-sig-id ...))) diff --git a/collects/mzlib/private/unit-contract.ss b/collects/mzlib/private/unit-contract.ss index 428b80b61b..a3b4598bc2 100644 --- a/collects/mzlib/private/unit-contract.ss +++ b/collects/mzlib/private/unit-contract.ss @@ -1,12 +1,13 @@ #lang scheme/base (require (for-syntax scheme/base - stxclass syntax/boundmap syntax/name + syntax/parse "unit-compiletime.ss" "unit-contract-syntax.ss" "unit-syntax.ss") + (for-meta 2 scheme/base) scheme/contract "unit-utils.ss" "unit-runtime.ss") diff --git a/collects/mzlib/unit.ss b/collects/mzlib/unit.ss index fcca03b84e..61be0f6786 100644 --- a/collects/mzlib/unit.ss +++ b/collects/mzlib/unit.ss @@ -1,10 +1,10 @@ (module unit mzscheme (require-for-syntax mzlib/list - stxclass syntax/boundmap syntax/context syntax/kerncase syntax/name + syntax/parse syntax/struct syntax/stx "private/unit-contract-syntax.ss"