diff --git a/collects/typed-scheme/private/init-envs.ss b/collects/typed-scheme/env/init-envs.ss similarity index 90% rename from collects/typed-scheme/private/init-envs.ss rename to collects/typed-scheme/env/init-envs.ss index d0dac77c..4a03b910 100644 --- a/collects/typed-scheme/private/init-envs.ss +++ b/collects/typed-scheme/env/init-envs.ss @@ -1,11 +1,16 @@ #lang scheme/base (provide (all-defined-out)) +(require "../utils/utils.ss") -(require "type-env.ss" "type-rep.ss" "type-name-env.ss" "union.ss" "effect-rep.ss" - "type-effect-convenience.ss" "type-alias-env.ss" - "type-alias-env.ss") -(require mzlib/pconvert scheme/match mzlib/shared - (for-template mzlib/pconvert mzlib/shared scheme/base "type-rep.ss" "union.ss" "effect-rep.ss")) +(require "type-env.ss" + "type-name-env.ss" + (rep type-rep effect-rep) + (for-template (rep type-rep effect-rep) + (private union) + mzlib/pconvert mzlib/shared scheme/base) + (private type-effect-convenience union) + "type-alias-env.ss" + mzlib/pconvert scheme/match mzlib/shared) (define (initialize-type-name-env initial-type-names) (for-each (lambda (nm/ty) (register-resolved-type-alias (car nm/ty) (cadr nm/ty))) initial-type-names)) diff --git a/collects/typed-scheme/private/lexical-env.ss b/collects/typed-scheme/env/lexical-env.ss similarity index 90% rename from collects/typed-scheme/private/lexical-env.ss rename to collects/typed-scheme/env/lexical-env.ss index e5946a31..63a1295b 100644 --- a/collects/typed-scheme/private/lexical-env.ss +++ b/collects/typed-scheme/env/lexical-env.ss @@ -1,6 +1,12 @@ #lang scheme/base -(require "type-environments.ss" "tc-utils.ss" "type-env.ss" "mutated-vars.ss" "type-utils.ss" "type-effect-convenience.ss") +(require (except-in "../utils/utils.ss" extend)) +(require "type-environments.ss" + (utils tc-utils) + "type-env.ss" + (private mutated-vars) + (private type-utils) + (private type-effect-convenience)) (provide (all-defined-out)) diff --git a/collects/typed-scheme/private/type-alias-env.ss b/collects/typed-scheme/env/type-alias-env.ss similarity index 96% rename from collects/typed-scheme/private/type-alias-env.ss rename to collects/typed-scheme/env/type-alias-env.ss index 0be4da74..dd9183d3 100644 --- a/collects/typed-scheme/private/type-alias-env.ss +++ b/collects/typed-scheme/env/type-alias-env.ss @@ -1,7 +1,8 @@ #lang scheme/base +(require (except-in "../utils/utils.ss" extend)) (require syntax/boundmap - "tc-utils.ss" + (utils tc-utils) mzlib/trace scheme/match) diff --git a/collects/typed-scheme/private/type-env.ss b/collects/typed-scheme/env/type-env.ss similarity index 95% rename from collects/typed-scheme/private/type-env.ss rename to collects/typed-scheme/env/type-env.ss index d9dafeef..59eb3cad 100644 --- a/collects/typed-scheme/private/type-env.ss +++ b/collects/typed-scheme/env/type-env.ss @@ -1,7 +1,9 @@ #lang scheme/base +(require (except-in "../utils/utils.ss" extend)) (require syntax/boundmap - "tc-utils.ss" "type-utils.ss") + (utils tc-utils) + (private type-utils)) (provide register-type finish-register-type diff --git a/collects/typed-scheme/private/type-environments.ss b/collects/typed-scheme/env/type-environments.ss similarity index 96% rename from collects/typed-scheme/private/type-environments.ss rename to collects/typed-scheme/env/type-environments.ss index 536fdfc9..0f159ec0 100644 --- a/collects/typed-scheme/private/type-environments.ss +++ b/collects/typed-scheme/env/type-environments.ss @@ -10,8 +10,9 @@ initial-tvar-env with-dotted-env/extend) +(require (prefix-in r: "../utils/utils.ss")) (require scheme/match - "tc-utils.ss") + (r:utils tc-utils)) ;; eq? has the type of equal?, and l is an alist (with conses!) (define-struct env (eq? l)) diff --git a/collects/typed-scheme/private/type-name-env.ss b/collects/typed-scheme/env/type-name-env.ss similarity index 93% rename from collects/typed-scheme/private/type-name-env.ss rename to collects/typed-scheme/env/type-name-env.ss index 370b77e7..d6773f0e 100644 --- a/collects/typed-scheme/private/type-name-env.ss +++ b/collects/typed-scheme/env/type-name-env.ss @@ -1,9 +1,10 @@ #lang scheme/base +(require "../utils/utils.ss") (require syntax/boundmap mzlib/trace - "tc-utils.ss" - "type-utils.ss") + (utils tc-utils) + (private type-utils)) (provide register-type-name lookup-type-name diff --git a/collects/typed-scheme/private/constraint-structs.ss b/collects/typed-scheme/infer/constraint-structs.ss similarity index 94% rename from collects/typed-scheme/private/constraint-structs.ss rename to collects/typed-scheme/infer/constraint-structs.ss index def84ae0..d5c97034 100644 --- a/collects/typed-scheme/private/constraint-structs.ss +++ b/collects/typed-scheme/infer/constraint-structs.ss @@ -1,6 +1,7 @@ #lang scheme/base -(require "type-rep.ss" +(require (except-in "../utils/utils.ss" extend)) +(require (rep type-rep) scheme/contract) ;; S, T types diff --git a/collects/typed-scheme/private/constraints.ss b/collects/typed-scheme/infer/constraints.ss similarity index 94% rename from collects/typed-scheme/private/constraints.ss rename to collects/typed-scheme/infer/constraints.ss index 2697109e..3dff2c08 100644 --- a/collects/typed-scheme/private/constraints.ss +++ b/collects/typed-scheme/infer/constraints.ss @@ -1,8 +1,9 @@ #lang scheme/unit -(require "type-effect-convenience.ss" "type-rep.ss" - "type-utils.ss" "union.ss" "tc-utils.ss" - "subtype.ss" "utils.ss" +(require (except-in "../utils/utils.ss" extend)) +(require (private type-effect-convenience type-utils union subtype) + (rep type-rep) + (utils tc-utils) "signatures.ss" "constraint-structs.ss" scheme/match) diff --git a/collects/typed-scheme/private/dmap.ss b/collects/typed-scheme/infer/dmap.ss similarity index 92% rename from collects/typed-scheme/private/dmap.ss rename to collects/typed-scheme/infer/dmap.ss index ef2112ba..95926680 100644 --- a/collects/typed-scheme/private/dmap.ss +++ b/collects/typed-scheme/infer/dmap.ss @@ -1,6 +1,8 @@ #lang scheme/unit -(require "signatures.ss" "utils.ss" "tc-utils.ss" "constraint-structs.ss" +(require (except-in "../utils/utils.ss" extend)) +(require "signatures.ss" "constraint-structs.ss" + (utils tc-utils) scheme/match) (import constraints^) diff --git a/collects/typed-scheme/private/infer-unit.ss b/collects/typed-scheme/infer/infer-unit.ss similarity index 98% rename from collects/typed-scheme/private/infer-unit.ss rename to collects/typed-scheme/infer/infer-unit.ss index b9590895..c640d363 100644 --- a/collects/typed-scheme/private/infer-unit.ss +++ b/collects/typed-scheme/infer/infer-unit.ss @@ -1,12 +1,14 @@ #lang scheme/unit -(require "type-effect-convenience.ss" "type-rep.ss" "effect-rep.ss" "rep-utils.ss" - "free-variance.ss" - (except-in "type-utils.ss" Dotted) - "union.ss" "tc-utils.ss" "type-name-env.ss" - "subtype.ss" "remove-intersect.ss" "signatures.ss" "utils.ss" +(require (except-in "../utils/utils.ss")) +(require (rep free-variance type-rep effect-rep rep-utils) + (private type-effect-convenience union subtype remove-intersect) + (utils tc-utils) + (env type-name-env) + (except-in (private type-utils) Dotted) "constraint-structs.ss" - (only-in "type-environments.ss" lookup current-tvars) + "signatures.ss" + (only-in (env type-environments) lookup current-tvars) scheme/match mzlib/etc mzlib/trace diff --git a/collects/typed-scheme/private/infer.ss b/collects/typed-scheme/infer/infer.ss similarity index 67% rename from collects/typed-scheme/private/infer.ss rename to collects/typed-scheme/infer/infer.ss index d860e5f5..208943a3 100644 --- a/collects/typed-scheme/private/infer.ss +++ b/collects/typed-scheme/infer/infer.ss @@ -1,9 +1,10 @@ #lang scheme/base +(require (except-in "../utils/utils.ss" infer)) (require "infer-unit.ss" "constraints.ss" "dmap.ss" "signatures.ss" "restrict.ss" "promote-demote.ss" (only-in scheme/unit provide-signature-elements) - "unit-utils.ss") + (utils unit-utils)) (provide-signature-elements restrict^ infer^) diff --git a/collects/typed-scheme/private/promote-demote.ss b/collects/typed-scheme/infer/promote-demote.ss similarity index 96% rename from collects/typed-scheme/private/promote-demote.ss rename to collects/typed-scheme/infer/promote-demote.ss index d24eda82..87051229 100644 --- a/collects/typed-scheme/private/promote-demote.ss +++ b/collects/typed-scheme/infer/promote-demote.ss @@ -1,8 +1,9 @@ #lang scheme/unit -(require "type-effect-convenience.ss" "type-rep.ss" - "type-utils.ss" "union.ss" - "signatures.ss" "utils.ss" +(require "../utils/utils.ss") +(require (rep type-rep) + (private type-effect-convenience union type-utils) + "signatures.ss" scheme/list) (import) diff --git a/collects/typed-scheme/private/restrict.ss b/collects/typed-scheme/infer/restrict.ss similarity index 90% rename from collects/typed-scheme/private/restrict.ss rename to collects/typed-scheme/infer/restrict.ss index 2c86a687..e1365605 100644 --- a/collects/typed-scheme/private/restrict.ss +++ b/collects/typed-scheme/infer/restrict.ss @@ -1,8 +1,8 @@ #lang scheme/unit -(require "type-rep.ss" - "type-utils.ss" "union.ss" - "subtype.ss" "remove-intersect.ss" +(require "../utils/utils.ss") +(require (rep type-rep) + (private type-utils union remove-intersect subtype) "signatures.ss" scheme/match) diff --git a/collects/typed-scheme/infer/signatures.ss b/collects/typed-scheme/infer/signatures.ss new file mode 100644 index 00000000..6db02b38 --- /dev/null +++ b/collects/typed-scheme/infer/signatures.ss @@ -0,0 +1,29 @@ +#lang scheme/base +(require scheme/unit) +(provide (all-defined-out)) + +(define-signature dmap^ + (dmap-meet)) + +(define-signature promote-demote^ + (var-promote var-demote)) + +(define-signature constraints^ + (exn:infer? + fail-sym + ;; inference failure - masked before it gets to the user program + (define-syntaxes (fail!) + (syntax-rules () + [(_ s t) (raise fail-sym)])) + cset-meet cset-meet* + no-constraint + empty-cset + insert + cset-combine + c-meet)) + +(define-signature restrict^ + (restrict)) + +(define-signature infer^ + (infer infer/vararg infer/dots)) diff --git a/collects/typed-scheme/private/base-env.ss b/collects/typed-scheme/private/base-env.ss index 5703eb4f..719c25ba 100644 --- a/collects/typed-scheme/private/base-env.ss +++ b/collects/typed-scheme/private/base-env.ss @@ -3,6 +3,7 @@ ;; these are libraries providing functions we add types to that are not in scheme/base (require "extra-procs.ss" + "../utils/utils.ss" (only-in scheme/list cons? take drop add-between last filter-map) (only-in rnrs/lists-6 fold-left) '#%paramz @@ -15,13 +16,12 @@ ;; these are all for constructing the types given to variables (require (for-syntax scheme/base - "init-envs.ss" - "effect-rep.ss" - (except-in "type-rep.ss" make-arr) + (env init-envs) + (except-in (rep effect-rep type-rep) make-arr) "type-effect-convenience.ss" (only-in "type-effect-convenience.ss" [make-arr* make-arr]) "union.ss" - "tc-structs.ss")) + (typecheck tc-structs))) (define-for-syntax (initialize-others) (d-s date diff --git a/collects/typed-scheme/private/base-types.ss b/collects/typed-scheme/private/base-types.ss index cc4bb42a..6058fd4b 100644 --- a/collects/typed-scheme/private/base-types.ss +++ b/collects/typed-scheme/private/base-types.ss @@ -1,9 +1,10 @@ #lang scheme/base +(require (except-in "../utils/utils.ss" extend)) (require (for-syntax scheme/base - "init-envs.ss" - (except-in "type-rep.ss" make-arr) + (env init-envs) + (except-in (rep type-rep) make-arr) "type-effect-convenience.ss" (only-in "type-effect-convenience.ss" [make-arr* make-arr]) "union.ss")) diff --git a/collects/typed-scheme/private/parse-type.ss b/collects/typed-scheme/private/parse-type.ss index 0885e9c8..07adfd9e 100644 --- a/collects/typed-scheme/private/parse-type.ss +++ b/collects/typed-scheme/private/parse-type.ss @@ -2,16 +2,15 @@ (provide parse-type parse-type/id) -(require (except-in "type-rep.ss" make-arr) +(require (except-in "../utils/utils.ss" extend)) +(require (except-in (rep type-rep) make-arr) "type-effect-convenience.ss" (only-in "type-effect-convenience.ss" [make-arr* make-arr]) - "tc-utils.ss" + (utils tc-utils) "union.ss" syntax/stx - (except-in "type-environments.ss") - "type-name-env.ss" - "type-alias-env.ss" - "type-utils.ss" + (env type-environments type-name-env type-alias-env) + "type-utils.ss" scheme/match) (define enable-mu-parsing (make-parameter #t)) diff --git a/collects/typed-scheme/private/prims.ss b/collects/typed-scheme/private/prims.ss index ef3e7cc5..9068659c 100644 --- a/collects/typed-scheme/private/prims.ss +++ b/collects/typed-scheme/private/prims.ss @@ -22,20 +22,20 @@ This file defines two sorts of primitives. All of them are provided into any mod (provide (all-defined-out) (rename-out [define-typed-struct define-struct:])) +(require (except-in "../utils/utils.ss" extend)) (require (for-syntax scheme/base - "type-rep.ss" + (rep type-rep) mzlib/match "parse-type.ss" syntax/struct syntax/stx - "utils.ss" - "tc-utils.ss" - "type-name-env.ss" + (utils utils tc-utils) + (env type-name-env) "type-contract.ss")) (require "require-contract.ss" - "internal-forms.ss" + (typecheck internal-forms) (except-in mzlib/contract ->) (only-in mzlib/contract [-> c->]) mzlib/struct diff --git a/collects/typed-scheme/private/remove-intersect.ss b/collects/typed-scheme/private/remove-intersect.ss index f9b273e8..d244fb73 100644 --- a/collects/typed-scheme/private/remove-intersect.ss +++ b/collects/typed-scheme/private/remove-intersect.ss @@ -1,7 +1,8 @@ #lang scheme/base -(require "type-rep.ss" "union.ss" "subtype.ss" - "type-utils.ss" "resolve-type.ss" "type-effect-convenience.ss" +(require (except-in "../utils/utils.ss" extend)) +(require (rep type-rep) + (private union subtype resolve-type type-effect-convenience type-utils) mzlib/plt-match mzlib/trace) (provide (rename-out [*remove remove]) overlap) diff --git a/collects/typed-scheme/private/resolve-type.ss b/collects/typed-scheme/private/resolve-type.ss index d68de692..6526a428 100644 --- a/collects/typed-scheme/private/resolve-type.ss +++ b/collects/typed-scheme/private/resolve-type.ss @@ -1,6 +1,7 @@ #lang scheme/base +(require "../utils/utils.ss") -(require "type-rep.ss" "type-name-env.ss" "tc-utils.ss" +(require (rep type-rep) (env type-name-env) (utils tc-utils) "type-utils.ss" mzlib/plt-match mzlib/trace) diff --git a/collects/typed-scheme/private/subtype.ss b/collects/typed-scheme/private/subtype.ss index 3667f421..1db8c33b 100644 --- a/collects/typed-scheme/private/subtype.ss +++ b/collects/typed-scheme/private/subtype.ss @@ -1,12 +1,13 @@ #lang scheme/base +(require "../utils/utils.ss") -(require (except-in "type-rep.ss" sub-eff) "type-utils.ss" - "tc-utils.ss" - "effect-rep.ss" +(require (except-in (rep type-rep effect-rep) sub-eff) + (utils tc-utils) + "type-utils.ss" "type-comparison.ss" "resolve-type.ss" - "type-name-env.ss" - (only-in "infer-dummy.ss" unify) + (env type-name-env) + (only-in (infer infer-dummy) unify) mzlib/plt-match mzlib/trace) diff --git a/collects/typed-scheme/private/type-annotation.ss b/collects/typed-scheme/private/type-annotation.ss index 1a72e73b..bbb83034 100644 --- a/collects/typed-scheme/private/type-annotation.ss +++ b/collects/typed-scheme/private/type-annotation.ss @@ -1,7 +1,11 @@ #lang scheme/base -(require "type-rep.ss" "parse-type.ss" "tc-utils.ss" "subtype.ss" "utils.ss" - "type-env.ss" "type-effect-convenience.ss" "resolve-type.ss" "union.ss" +(require (except-in "../utils/utils.ss" extend)) +(require (rep type-rep) + (utils tc-utils) + (env type-env) + "parse-type.ss" "subtype.ss" + "type-effect-convenience.ss" "resolve-type.ss" "union.ss" scheme/match mzlib/trace) (provide type-annotation get-type diff --git a/collects/typed-scheme/private/type-effect-convenience.ss b/collects/typed-scheme/private/type-effect-convenience.ss index 0eb73bcd..13aa199c 100644 --- a/collects/typed-scheme/private/type-effect-convenience.ss +++ b/collects/typed-scheme/private/type-effect-convenience.ss @@ -1,13 +1,14 @@ #lang scheme/base -(require "type-rep.ss" - "effect-rep.ss" +(require "../utils/utils.ss") + +(require (rep type-rep effect-rep) + (utils tc-utils) scheme/match "type-comparison.ss" "type-effect-printer.ss" "union.ss" "subtype.ss" "type-utils.ss" - "tc-utils.ss" scheme/promise (for-syntax macro-debugger/stxclass/stxclass) (for-syntax scheme/base)) diff --git a/collects/typed-scheme/private/type-effect-printer.ss b/collects/typed-scheme/private/type-effect-printer.ss index 72038bb8..812f58a6 100644 --- a/collects/typed-scheme/private/type-effect-printer.ss +++ b/collects/typed-scheme/private/type-effect-printer.ss @@ -1,5 +1,9 @@ #lang scheme/base -(require "type-rep.ss" "effect-rep.ss" "rep-utils.ss" "tc-utils.ss" "planet-requires.ss" scheme/match) + +(require "../utils/utils.ss") +(require (rep type-rep effect-rep rep-utils) + (utils planet-requires tc-utils) + scheme/match) ;; do we attempt to find instantiations of polymorphic types to print? ;; FIXME - currently broken diff --git a/collects/typed-scheme/private/type-utils.ss b/collects/typed-scheme/private/type-utils.ss index 9c53cfa0..d74c89e0 100644 --- a/collects/typed-scheme/private/type-utils.ss +++ b/collects/typed-scheme/private/type-utils.ss @@ -1,10 +1,10 @@ #lang scheme/base -(require "type-rep.ss" - "effect-rep.ss" - "tc-utils.ss" - "rep-utils.ss" - (only-in "free-variance.ss" combine-frees) +(require "../utils/utils.ss") + +(require (rep type-rep effect-rep rep-utils) + (utils tc-utils) + (only-in (rep free-variance) combine-frees) mzlib/plt-match scheme/list mzlib/trace diff --git a/collects/typed-scheme/private/union.ss b/collects/typed-scheme/private/union.ss index 02a1a271..d2235d65 100644 --- a/collects/typed-scheme/private/union.ss +++ b/collects/typed-scheme/private/union.ss @@ -1,7 +1,11 @@ #lang scheme/base -(require "type-rep.ss" "subtype.ss" "tc-utils.ss" - "type-effect-printer.ss" "rep-utils.ss" +(require "../utils/utils.ss") + +(require (rep type-rep rep-utils) + (utils tc-utils) + "subtype.ss" + "type-effect-printer.ss" "type-comparison.ss" scheme/match mzlib/trace) diff --git a/collects/typed-scheme/private/effect-rep.ss b/collects/typed-scheme/rep/effect-rep.ss similarity index 100% rename from collects/typed-scheme/private/effect-rep.ss rename to collects/typed-scheme/rep/effect-rep.ss diff --git a/collects/typed-scheme/private/free-variance.ss b/collects/typed-scheme/rep/free-variance.ss similarity index 98% rename from collects/typed-scheme/private/free-variance.ss rename to collects/typed-scheme/rep/free-variance.ss index 8d476558..7e4014e3 100644 --- a/collects/typed-scheme/private/free-variance.ss +++ b/collects/typed-scheme/rep/free-variance.ss @@ -1,7 +1,8 @@ #lang scheme/base +(require "../utils/utils.ss") (require (for-syntax scheme/base) - "tc-utils.ss" + (utils tc-utils) mzlib/etc) ;; this file contains support for calculating the free variables/indexes of types diff --git a/collects/typed-scheme/private/interning.ss b/collects/typed-scheme/rep/interning.ss similarity index 100% rename from collects/typed-scheme/private/interning.ss rename to collects/typed-scheme/rep/interning.ss diff --git a/collects/typed-scheme/private/rep-utils.ss b/collects/typed-scheme/rep/rep-utils.ss similarity index 98% rename from collects/typed-scheme/private/rep-utils.ss rename to collects/typed-scheme/rep/rep-utils.ss index cd1d21b5..2f49dba9 100644 --- a/collects/typed-scheme/private/rep-utils.ss +++ b/collects/typed-scheme/rep/rep-utils.ss @@ -1,18 +1,18 @@ #lang scheme/base +(require "../utils/utils.ss") (require mzlib/struct mzlib/plt-match syntax/boundmap - "planet-requires.ss" + (utils planet-requires) "free-variance.ss" - "utils.ss" "interning.ss" mzlib/etc (for-syntax scheme/base syntax/struct syntax/stx - "utils.ss")) + (utils utils))) (provide == dt de print-type* print-effect* Type Type? Effect Effect? defintern hash-id Type-seq Effect-seq) diff --git a/collects/typed-scheme/private/type-rep.ss b/collects/typed-scheme/rep/type-rep.ss similarity index 99% rename from collects/typed-scheme/private/type-rep.ss rename to collects/typed-scheme/rep/type-rep.ss index 889d0dd5..9ced9791 100644 --- a/collects/typed-scheme/private/type-rep.ss +++ b/collects/typed-scheme/rep/type-rep.ss @@ -1,7 +1,8 @@ #lang scheme/base +(require "../utils/utils.ss") -(require "planet-requires.ss" "rep-utils.ss" "effect-rep.ss" "tc-utils.ss" - "free-variance.ss" +(require (utils planet-requires tc-utils) + "rep-utils.ss" "effect-rep.ss" "free-variance.ss" mzlib/trace scheme/match (for-syntax scheme/base)) diff --git a/collects/typed-scheme/private/check-subforms-unit.ss b/collects/typed-scheme/typecheck/check-subforms-unit.ss similarity index 92% rename from collects/typed-scheme/private/check-subforms-unit.ss rename to collects/typed-scheme/typecheck/check-subforms-unit.ss index 554bbea1..e37c6f37 100644 --- a/collects/typed-scheme/private/check-subforms-unit.ss +++ b/collects/typed-scheme/typecheck/check-subforms-unit.ss @@ -1,15 +1,12 @@ #lang scheme/unit +(require (except-in "../utils/utils.ss" extend)) (require syntax/kerncase scheme/match "signatures.ss" - "type-utils.ss" - "type-rep.ss" ;; doesn't need tests - "type-effect-convenience.ss" ;; maybe needs tests - "union.ss" - "subtype.ss" ;; has tests - "tc-utils.ss" ;; doesn't need tests - ) + (private type-utils type-effect-convenience union subtype) + (utils tc-utils) + (rep type-rep)) (import tc-if^ tc-lambda^ tc-app^ tc-let^ tc-expr^) (export check-subforms^) diff --git a/collects/typed-scheme/private/def-binding.ss b/collects/typed-scheme/typecheck/def-binding.ss similarity index 100% rename from collects/typed-scheme/private/def-binding.ss rename to collects/typed-scheme/typecheck/def-binding.ss diff --git a/collects/typed-scheme/private/internal-forms.ss b/collects/typed-scheme/typecheck/internal-forms.ss similarity index 100% rename from collects/typed-scheme/private/internal-forms.ss rename to collects/typed-scheme/typecheck/internal-forms.ss diff --git a/collects/typed-scheme/private/provide-handling.ss b/collects/typed-scheme/typecheck/provide-handling.ss similarity index 96% rename from collects/typed-scheme/private/provide-handling.ss rename to collects/typed-scheme/typecheck/provide-handling.ss index 1d4f67bf..4ca36a34 100644 --- a/collects/typed-scheme/private/provide-handling.ss +++ b/collects/typed-scheme/typecheck/provide-handling.ss @@ -1,11 +1,12 @@ #lang scheme/base +(require (except-in "../utils/utils.ss" extend)) (require (only-in srfi/1/list s:member) syntax/kerncase mzlib/trace - "type-contract.ss" - "type-rep.ss" - "tc-utils.ss" + (private type-contract) + (rep type-rep) + (utils tc-utils) "def-binding.ss") (require (for-template scheme/base diff --git a/collects/typed-scheme/private/signatures.ss b/collects/typed-scheme/typecheck/signatures.ss similarity index 51% rename from collects/typed-scheme/private/signatures.ss rename to collects/typed-scheme/typecheck/signatures.ss index 9f8b0dba..b5ab6ebc 100644 --- a/collects/typed-scheme/private/signatures.ss +++ b/collects/typed-scheme/typecheck/signatures.ss @@ -2,41 +2,11 @@ (require scheme/unit) (provide (all-defined-out)) -(define-signature dmap^ - (dmap-meet)) - -(define-signature promote-demote^ - (var-promote var-demote)) - -(define-signature constraints^ - (exn:infer? - fail-sym - ;; inference failure - masked before it gets to the user program - (define-syntaxes (fail!) - (syntax-rules () - [(_ s t) (raise fail-sym)])) - cset-meet cset-meet* - no-constraint - empty-cset - insert - cset-combine - c-meet)) - -(define-signature restrict^ - (restrict)) - -(define-signature infer^ - (infer infer/vararg infer/dots)) - - - -;; cycle 2 - (define-signature typechecker^ (type-check tc-toplevel-form)) (define-signature tc-expr^ - (tc-expr tc-expr/check tc-expr/check/t check-below tc-literal tc-exprs tc-exprs/check tc-expr/t #;check-expr)) + (tc-expr tc-expr/check tc-expr/check/t check-below tc-exprs tc-exprs/check tc-expr/t)) (define-signature check-subforms^ (check-subforms/ignore check-subforms/with-handlers check-subforms/with-handlers/check)) diff --git a/collects/typed-scheme/private/tc-app-unit.ss b/collects/typed-scheme/typecheck/tc-app-unit.ss similarity index 98% rename from collects/typed-scheme/private/tc-app-unit.ss rename to collects/typed-scheme/typecheck/tc-app-unit.ss index 5d8afe8a..3c04db14 100644 --- a/collects/typed-scheme/private/tc-app-unit.ss +++ b/collects/typed-scheme/typecheck/tc-app-unit.ss @@ -1,19 +1,13 @@ #lang scheme/unit +(require (only-in "../utils/utils.ss" debug in-syntax printf/log in-pairs rep utils private env [infer r:infer])) (require "signatures.ss" - "type-rep.ss" - "effect-rep.ss" - "tc-utils.ss" - "subtype.ss" - "infer.ss" - (only-in "utils.ss" debug in-syntax printf/log in-pairs) - "union.ss" - "type-utils.ss" - "type-effect-convenience.ss" - "type-effect-printer.ss" - "type-annotation.ss" - "resolve-type.ss" - "type-environments.ss" + (rep type-rep effect-rep) + (utils tc-utils) + (private subtype type-utils union type-effect-convenience type-effect-printer resolve-type + type-annotation) + (r:infer infer) + (env type-environments) (only-in srfi/1 alist-delete) (only-in scheme/private/class-internal make-object do-make-object) mzlib/trace mzlib/pretty syntax/kerncase scheme/match @@ -21,7 +15,7 @@ (for-template "internal-forms.ss" scheme/base (only-in scheme/private/class-internal make-object do-make-object))) -(require "constraint-structs.ss") +(require (r:infer constraint-structs)) (import tc-expr^ tc-lambda^ tc-dots^) (export tc-app^) diff --git a/collects/typed-scheme/private/tc-expr-unit.ss b/collects/typed-scheme/typecheck/tc-expr-unit.ss similarity index 96% rename from collects/typed-scheme/private/tc-expr-unit.ss rename to collects/typed-scheme/typecheck/tc-expr-unit.ss index 163fa343..7e32c0c7 100644 --- a/collects/typed-scheme/private/tc-expr-unit.ss +++ b/collects/typed-scheme/typecheck/tc-expr-unit.ss @@ -1,21 +1,15 @@ #lang scheme/unit +(require (rename-in "../utils/utils.ss" [private r:private])) (require syntax/kerncase scheme/match "signatures.ss" - "type-utils.ss" - "utils.ss" ;; doesn't need tests - "type-rep.ss" ;; doesn't need tests - "type-effect-convenience.ss" ;; maybe needs tests - "union.ss" - "subtype.ss" ;; has tests - "parse-type.ss" ;; has tests - "tc-utils.ss" ;; doesn't need tests - "lexical-env.ss" ;; maybe needs tests - "type-annotation.ss" ;; has tests - "effect-rep.ss" - (only-in "type-environments.ss" lookup current-tvars extend-env) + (r:private type-utils type-effect-convenience union subtype parse-type type-annotation) + (rep type-rep effect-rep) + (utils tc-utils) + (env lexical-env) + (only-in (env type-environments) lookup current-tvars extend-env) scheme/private/class-internal (only-in srfi/1 split-at)) diff --git a/collects/typed-scheme/private/tc-lambda-unit.ss b/collects/typed-scheme/typecheck/tc-lambda-unit.ss similarity index 96% rename from collects/typed-scheme/private/tc-lambda-unit.ss rename to collects/typed-scheme/typecheck/tc-lambda-unit.ss index 455d6acd..962c480e 100644 --- a/collects/typed-scheme/private/tc-lambda-unit.ss +++ b/collects/typed-scheme/typecheck/tc-lambda-unit.ss @@ -1,20 +1,15 @@ #lang scheme/unit +(require (rename-in "../utils/utils.ss" [infer r:infer] [extend r:extend])) (require "signatures.ss" mzlib/trace scheme/list - (except-in "type-rep.ss" make-arr) ;; doesn't need tests - "type-effect-convenience.ss" ;; maybe needs tests - "type-environments.ss" ;; doesn't need tests - "lexical-env.ss" ;; maybe needs tests - "type-annotation.ss" ;; has tests - (except-in "utils.ss" extend) - "type-utils.ss" - "effect-rep.ss" - "tc-utils.ss" - "union.ss" + (except-in (rep type-rep effect-rep) make-arr) ;; doesn't need tests + (private type-effect-convenience type-annotation union type-utils) + (env type-environments lexical-env) + (utils tc-utils) mzlib/plt-match - (only-in "type-effect-convenience.ss" [make-arr* make-arr])) + (only-in (private type-effect-convenience) [make-arr* make-arr])) (require (for-template scheme/base "internal-forms.ss")) (import tc-expr^) diff --git a/collects/typed-scheme/private/tc-let-unit.ss b/collects/typed-scheme/typecheck/tc-let-unit.ss similarity index 96% rename from collects/typed-scheme/private/tc-let-unit.ss rename to collects/typed-scheme/typecheck/tc-let-unit.ss index eb292852..9bf2bf3f 100644 --- a/collects/typed-scheme/private/tc-let-unit.ss +++ b/collects/typed-scheme/typecheck/tc-let-unit.ss @@ -1,14 +1,9 @@ #lang scheme/unit +(require (rename-in "../utils/utils.ss" [infer r:infer])) (require "signatures.ss" - "type-effect-convenience.ss" - "lexical-env.ss" - "type-annotation.ss" - "type-alias-env.ss" - "type-env.ss" - "parse-type.ss" - "utils.ss" - "type-utils.ss" + (private type-effect-convenience type-annotation parse-type type-utils) + (env lexical-env type-alias-env type-env) syntax/free-vars mzlib/trace scheme/match diff --git a/collects/typed-scheme/private/tc-structs.ss b/collects/typed-scheme/typecheck/tc-structs.ss similarity index 95% rename from collects/typed-scheme/private/tc-structs.ss rename to collects/typed-scheme/typecheck/tc-structs.ss index 23c8a430..86233c0d 100644 --- a/collects/typed-scheme/private/tc-structs.ss +++ b/collects/typed-scheme/typecheck/tc-structs.ss @@ -1,15 +1,12 @@ #lang scheme/base -(require "type-rep.ss" ;; doesn't need tests - "type-effect-convenience.ss" ;; maybe needs tests - "type-env.ss" ;; maybe needs tests - "type-utils.ss" - "parse-type.ss" ;; has tests - "type-environments.ss" ;; doesn't need tests - "type-name-env.ss" ;; maybe needs tests - "union.ss" - "tc-utils.ss" - "resolve-type.ss" +(require (except-in "../utils/utils.ss" extend)) +(require (rep type-rep) + (private type-effect-convenience + type-utils parse-type + union resolve-type) + (env type-env type-environments type-name-env) + (utils tc-utils) "def-binding.ss" syntax/kerncase syntax/struct diff --git a/collects/typed-scheme/private/tc-toplevel.ss b/collects/typed-scheme/typecheck/tc-toplevel.ss similarity index 94% rename from collects/typed-scheme/private/tc-toplevel.ss rename to collects/typed-scheme/typecheck/tc-toplevel.ss index 23b3614c..5f2d36f2 100644 --- a/collects/typed-scheme/private/tc-toplevel.ss +++ b/collects/typed-scheme/typecheck/tc-toplevel.ss @@ -1,26 +1,17 @@ #lang scheme/unit +(require (rename-in "../utils/utils.ss" [infer r:infer])) (require syntax/kerncase mzlib/etc scheme/match "signatures.ss" "tc-structs.ss" - "type-utils.ss" - "utils.ss" ;; doesn't need tests - "type-effect-convenience.ss" ;; maybe needs tests - "internal-forms.ss" ;; doesn't need tests - "type-env.ss" ;; maybe needs tests - "parse-type.ss" ;; has tests - "tc-utils.ss" ;; doesn't need tests - "type-annotation.ss" ;; has tests - "type-name-env.ss" ;; maybe needs tests - "init-envs.ss" - "mutated-vars.ss" + (private type-utils type-effect-convenience parse-type type-annotation mutated-vars type-contract) + (env type-env init-envs type-name-env type-alias-env) + (utils tc-utils) + "provide-handling.ss" "def-binding.ss" - "provide-handling.ss" - "type-alias-env.ss" - "type-contract.ss" (for-template "internal-forms.ss" mzlib/contract diff --git a/collects/typed-scheme/private/typechecker.ss b/collects/typed-scheme/typecheck/typechecker.ss similarity index 89% rename from collects/typed-scheme/private/typechecker.ss rename to collects/typed-scheme/typecheck/typechecker.ss index 3ec16bcf..ed935ff9 100644 --- a/collects/typed-scheme/private/typechecker.ss +++ b/collects/typed-scheme/typecheck/typechecker.ss @@ -1,6 +1,7 @@ #lang scheme/base -(require "unit-utils.ss" +(require "../utils/utils.ss") +(require (utils unit-utils) mzlib/trace (only-in scheme/unit provide-signature-elements) "signatures.ss" "tc-toplevel.ss" diff --git a/collects/typed-scheme/typed-scheme.ss b/collects/typed-scheme/typed-scheme.ss index 2eb33e21..0bcfc701 100644 --- a/collects/typed-scheme/typed-scheme.ss +++ b/collects/typed-scheme/typed-scheme.ss @@ -1,22 +1,18 @@ #lang scheme/base -(require "private/base-env.ss" - "private/base-types.ss" +(require (rename-in "utils/utils.ss" [infer r:infer])) + +(require (private base-env base-types) (for-syntax scheme/base - "private/type-utils.ss" - "private/typechecker.ss" - "private/type-rep.ss" - "private/provide-handling.ss" - "private/type-environments.ss" - "private/tc-utils.ss" - "private/type-name-env.ss" - "private/type-alias-env.ss" - (except-in "private/utils.ss" extend) - (only-in "private/infer-dummy.ss" infer-param) - "private/infer.ss" - "private/type-effect-convenience.ss" - "private/type-contract.ss" + (private type-utils type-contract type-effect-convenience) + (typecheck typechecker provide-handling) + (env type-environments type-name-env type-alias-env) + (r:infer infer) + (utils tc-utils) + (rep type-rep) + (except-in (utils utils) infer extend) + (only-in (r:infer infer-dummy) infer-param) scheme/nest syntax/kerncase scheme/match)) diff --git a/collects/typed-scheme/private/tc-utils.ss b/collects/typed-scheme/utils/tc-utils.ss similarity index 100% rename from collects/typed-scheme/private/tc-utils.ss rename to collects/typed-scheme/utils/tc-utils.ss diff --git a/collects/typed-scheme/private/utils.ss b/collects/typed-scheme/utils/utils.ss similarity index 86% rename from collects/typed-scheme/private/utils.ss rename to collects/typed-scheme/utils/utils.ss index 80c3f802..ad04ad79 100644 --- a/collects/typed-scheme/private/utils.ss +++ b/collects/typed-scheme/utils/utils.ss @@ -2,6 +2,7 @@ (require (for-syntax scheme/base) mzlib/plt-match + scheme/require-syntax mzlib/struct) (provide with-syntax* syntax-map start-timing do-time reverse-begin printf/log @@ -16,7 +17,38 @@ in-list-forever extend debug - in-syntax) + in-syntax + ;; require macros + rep utils typecheck infer env private) + +(define-syntax (define-requirer stx) + (syntax-case stx () + [(_ nm) + #`(... + (define-require-syntax nm + (lambda (stx) + (syntax-case stx () + [(_ id ...) + (andmap identifier? (syntax->list #'(id ...))) + (with-syntax ([(id* ...) (map (lambda (id) (datum->syntax + id + (string->symbol + (string-append + "typed-scheme/" + #,(symbol->string (syntax-e #'nm)) + "/" + (symbol->string (syntax-e id)))) + id id)) + (syntax->list #'(id ...)))]) + (syntax/loc stx (combine-in id* ...)))]))))])) + + +(define-requirer rep) +(define-requirer infer) +(define-requirer typecheck) +(define-requirer utils) +(define-requirer env) +(define-requirer private) (define-sequence-syntax in-syntax (lambda () #'syntax->list)