expander: improve dependency-cycle reporting
Show the dependency chain when a redeclared module creates a dependency cycle.
This commit is contained in:
parent
cdf7e9c383
commit
0527c9c9e2
|
@ -205,7 +205,7 @@
|
|||
;; Register this module's exports for use in resolving bulk
|
||||
;; bindings, so that bulk bindings can be shared among other
|
||||
;; modules when unmarshaling; we don't do this without
|
||||
;; `with-submodules?` to avoid loeaking submodules being
|
||||
;; `with-submodules?` to avoid leaking submodules being
|
||||
;; expanded, but see also `bind-all-provides!`
|
||||
(register-bulk-provide! (namespace-bulk-binding-registry ns)
|
||||
mod-name
|
||||
|
@ -223,7 +223,9 @@
|
|||
|
||||
(define at-phase (hash-ref (namespace-module-instances ns) phase))
|
||||
(hash-set! at-phase mod-name (make-module-instance m-ns m))
|
||||
|
||||
|
||||
(set-module-instance-shifted-requires! prior-mi #f)
|
||||
|
||||
(when visit?
|
||||
(namespace-module-visit! ns (namespace-mpi m-ns) phase))
|
||||
(when run?
|
||||
|
@ -369,7 +371,8 @@
|
|||
(define (namespace-module-instantiate! ns mpi instance-phase #:run-phase [run-phase (namespace-phase ns)]
|
||||
#:skip-run? [skip-run? #f]
|
||||
#:otherwise-available? [otherwise-available? #t]
|
||||
#:seen [seen #hasheq()])
|
||||
#:seen [seen #hasheq()]
|
||||
#:seen-list [seen-list null])
|
||||
(unless (module-path-index? mpi)
|
||||
(error "not a module path index:" mpi))
|
||||
(define name (module-path-index-resolve mpi #t))
|
||||
|
@ -382,7 +385,8 @@
|
|||
(run-module-instance! mi ns #:run-phase run-phase
|
||||
#:skip-run? skip-run?
|
||||
#:otherwise-available? otherwise-available?
|
||||
#:seen seen))
|
||||
#:seen seen
|
||||
#:seen-list seen-list))
|
||||
;; If the module is cross-phase persistent, make sure it's instantiated
|
||||
;; at phase 0 and registered in `ns` as phaseless; otherwise
|
||||
(cond
|
||||
|
@ -408,7 +412,8 @@
|
|||
(define (run-module-instance! mi ns #:run-phase run-phase
|
||||
#:skip-run? skip-run?
|
||||
#:otherwise-available? otherwise-available?
|
||||
#:seen [seen #hasheq()])
|
||||
#:seen [seen #hasheq()]
|
||||
#:seen-list [seen-list null])
|
||||
(performance-region
|
||||
['eval 'requires]
|
||||
;; Nothing to do if we've run this phase already and made the
|
||||
|
@ -429,7 +434,11 @@
|
|||
(define bulk-binding-registry (namespace-bulk-binding-registry m-ns))
|
||||
|
||||
(when (hash-ref seen mi #f)
|
||||
(error 'require "import cycle detected during module instantiation"))
|
||||
(error 'require
|
||||
(apply string-append
|
||||
"import cycle detected during module instantiation\n"
|
||||
" dependency chain:"
|
||||
(module-instances->indented-module-names mi seen-list))))
|
||||
|
||||
;; If we haven't shifted required mpis already, do that
|
||||
(unless (module-instance-shifted-requires mi)
|
||||
|
@ -450,7 +459,8 @@
|
|||
#:run-phase run-phase
|
||||
#:skip-run? skip-run?
|
||||
#:otherwise-available? otherwise-available?
|
||||
#:seen (hash-set seen mi #t))))
|
||||
#:seen (hash-set seen mi #t)
|
||||
#:seen-list (cons mi seen-list))))
|
||||
|
||||
;; Run or make available phases of the module body:
|
||||
(unless (label-phase? instance-phase)
|
||||
|
@ -558,3 +568,19 @@
|
|||
'provided))))))
|
||||
(set-module-access! m access)
|
||||
access)
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(define (module-instances->indented-module-names mi seen-list)
|
||||
(let ([mi->name (lambda (mi)
|
||||
(format "\n ~a" (module-path-index-resolve
|
||||
(namespace-mpi (module-instance-namespace mi)))))])
|
||||
(cons
|
||||
(mi->name mi)
|
||||
(let loop ([seen-list seen-list])
|
||||
(cond
|
||||
[(null? seen-list) '()]
|
||||
[(eq? mi (car seen-list))
|
||||
(list (mi->name mi))]
|
||||
[else
|
||||
(cons (mi->name (car seen-list)) (loop (cdr seen-list)))])))))
|
||||
|
|
|
@ -14034,38 +14034,38 @@ static const char *startup_source =
|
|||
"(let-values(((name_0)(1/module-path-index-resolve name-mpi_0)))"
|
||||
"(let-values(((m-ns_0)"
|
||||
"(let-values(((the-struct_0)"
|
||||
"(let-values(((ns134_0) ns_0)"
|
||||
"((root-expand-ctx135_0) root-expand-ctx_0)"
|
||||
"((temp136_0) #f))"
|
||||
"(new-namespace.1 temp136_0 root-expand-ctx135_0 ns134_0))))"
|
||||
"(let-values(((ns138_0) ns_0)"
|
||||
"((root-expand-ctx139_0) root-expand-ctx_0)"
|
||||
"((temp140_0) #f))"
|
||||
"(new-namespace.1 temp140_0 root-expand-ctx139_0 ns138_0))))"
|
||||
"(if(1/namespace? the-struct_0)"
|
||||
"(let-values(((mpi126_0) name-mpi_0)"
|
||||
"((source-name127_0)(resolved-module-path-root-name name_0))"
|
||||
"((phase128_0) phase_0)"
|
||||
"((0-phase129_0) phase_0)"
|
||||
"((submodule-declarations130_0)"
|
||||
"(let-values(((mpi130_0) name-mpi_0)"
|
||||
"((source-name131_0)(resolved-module-path-root-name name_0))"
|
||||
"((phase132_0) phase_0)"
|
||||
"((0-phase133_0) phase_0)"
|
||||
"((submodule-declarations134_0)"
|
||||
"(if for-submodule?_0"
|
||||
"(namespace-submodule-declarations ns_0)"
|
||||
"(make-small-hasheq)))"
|
||||
"((available-module-instances131_0)(make-hasheqv))"
|
||||
"((module-instances132_0)(make-hasheqv))"
|
||||
"((declaration-inspector133_0)(current-code-inspector)))"
|
||||
"((available-module-instances135_0)(make-hasheqv))"
|
||||
"((module-instances136_0)(make-hasheqv))"
|
||||
"((declaration-inspector137_0)(current-code-inspector)))"
|
||||
"(namespace1.1"
|
||||
" mpi126_0"
|
||||
" source-name127_0"
|
||||
" mpi130_0"
|
||||
" source-name131_0"
|
||||
"(namespace-root-expand-ctx the-struct_0)"
|
||||
" phase128_0"
|
||||
" 0-phase129_0"
|
||||
" phase132_0"
|
||||
" 0-phase133_0"
|
||||
"(namespace-phase-to-namespace the-struct_0)"
|
||||
"(namespace-phase-level-to-definitions the-struct_0)"
|
||||
"(namespace-module-registry$1 the-struct_0)"
|
||||
"(namespace-bulk-binding-registry the-struct_0)"
|
||||
" submodule-declarations130_0"
|
||||
" submodule-declarations134_0"
|
||||
"(namespace-root-namespace the-struct_0)"
|
||||
" declaration-inspector133_0"
|
||||
" declaration-inspector137_0"
|
||||
"(namespace-inspector the-struct_0)"
|
||||
" available-module-instances131_0"
|
||||
" module-instances132_0))"
|
||||
" available-module-instances135_0"
|
||||
" module-instances136_0))"
|
||||
" (raise-argument-error 'struct-copy \"namespace?\" the-struct_0)))))"
|
||||
"(let-values((()"
|
||||
"(begin"
|
||||
|
@ -14096,10 +14096,10 @@ static const char *startup_source =
|
|||
"(let-values(((prior-mi_0)"
|
||||
"(if prior-m_0"
|
||||
"(if(not(eq? m_0 prior-m_0))"
|
||||
"(let-values(((ns137_0) ns_0)"
|
||||
"((mod-name138_0) mod-name_0)"
|
||||
"((temp139_0)(namespace-phase ns_0)))"
|
||||
"(namespace->module-instance.1 #f #f void ns137_0 mod-name138_0 temp139_0))"
|
||||
"(let-values(((ns141_0) ns_0)"
|
||||
"((mod-name142_0) mod-name_0)"
|
||||
"((temp143_0)(namespace-phase ns_0)))"
|
||||
"(namespace->module-instance.1 #f #f void ns141_0 mod-name142_0 temp143_0))"
|
||||
" #f)"
|
||||
" #f)))"
|
||||
"(begin"
|
||||
|
@ -14129,30 +14129,32 @@ static const char *startup_source =
|
|||
"(let-values(((at-phase_0)(hash-ref(namespace-module-instances ns_0) phase_0)))"
|
||||
"(begin"
|
||||
"(hash-set! at-phase_0 mod-name_0(make-module-instance m-ns_0 m_0))"
|
||||
"(set-module-instance-shifted-requires! prior-mi_0 #f)"
|
||||
"(if visit?_0"
|
||||
"(let-values()"
|
||||
"(let-values(((ns140_0) ns_0)"
|
||||
"((temp141_0)(namespace-mpi m-ns_0))"
|
||||
"((phase142_0) phase_0))"
|
||||
"(let-values(((ns144_0) ns_0)"
|
||||
"((temp145_0)(namespace-mpi m-ns_0))"
|
||||
"((phase146_0) phase_0))"
|
||||
"(namespace-module-visit!.1"
|
||||
" unsafe-undefined"
|
||||
" ns140_0"
|
||||
" temp141_0"
|
||||
" phase142_0)))"
|
||||
" ns144_0"
|
||||
" temp145_0"
|
||||
" phase146_0)))"
|
||||
"(void))"
|
||||
"(if run?_0"
|
||||
"(let-values()"
|
||||
"(let-values(((ns143_0) ns_0)"
|
||||
"((temp144_0)(namespace-mpi m-ns_0))"
|
||||
"((phase145_0) phase_0))"
|
||||
"(let-values(((ns147_0) ns_0)"
|
||||
"((temp148_0)(namespace-mpi m-ns_0))"
|
||||
"((phase149_0) phase_0))"
|
||||
"(namespace-module-instantiate!.1"
|
||||
" #t"
|
||||
" unsafe-undefined"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" ns143_0"
|
||||
" temp144_0"
|
||||
" phase145_0)))"
|
||||
" ns147_0"
|
||||
" temp148_0"
|
||||
" phase149_0)))"
|
||||
"(void))))))))))"
|
||||
"(void)))))))))))))"
|
||||
"(define-values"
|
||||
|
@ -14231,32 +14233,32 @@ static const char *startup_source =
|
|||
"(let-values(((m-ns_0)"
|
||||
"(let-values(((the-struct_0) ns_0))"
|
||||
"(if(1/namespace? the-struct_0)"
|
||||
"(let-values(((mpi146_0)(namespace-mpi existing-m-ns_0))"
|
||||
"((source-name147_0)(namespace-source-name existing-m-ns_0))"
|
||||
"((root-expand-ctx148_0)(box(unbox(namespace-root-expand-ctx existing-m-ns_0))))"
|
||||
"((phase149_0)(namespace-phase existing-m-ns_0))"
|
||||
"((0-phase150_0)(namespace-0-phase existing-m-ns_0))"
|
||||
"((phase-to-namespace151_0)(make-small-hasheqv))"
|
||||
"((phase-level-to-definitions152_0)"
|
||||
"(let-values(((mpi150_0)(namespace-mpi existing-m-ns_0))"
|
||||
"((source-name151_0)(namespace-source-name existing-m-ns_0))"
|
||||
"((root-expand-ctx152_0)(box(unbox(namespace-root-expand-ctx existing-m-ns_0))))"
|
||||
"((phase153_0)(namespace-phase existing-m-ns_0))"
|
||||
"((0-phase154_0)(namespace-0-phase existing-m-ns_0))"
|
||||
"((phase-to-namespace155_0)(make-small-hasheqv))"
|
||||
"((phase-level-to-definitions156_0)"
|
||||
"(if(module-cross-phase-persistent? m_0)"
|
||||
"(namespace-phase-level-to-definitions existing-m-ns_0)"
|
||||
"(make-small-hasheqv)))"
|
||||
"((declaration-inspector153_0)(module-inspector m_0))"
|
||||
"((inspector154_0)(namespace-inspector existing-m-ns_0)))"
|
||||
"((declaration-inspector157_0)(module-inspector m_0))"
|
||||
"((inspector158_0)(namespace-inspector existing-m-ns_0)))"
|
||||
"(namespace1.1"
|
||||
" mpi146_0"
|
||||
" source-name147_0"
|
||||
" root-expand-ctx148_0"
|
||||
" phase149_0"
|
||||
" 0-phase150_0"
|
||||
" phase-to-namespace151_0"
|
||||
" phase-level-to-definitions152_0"
|
||||
" mpi150_0"
|
||||
" source-name151_0"
|
||||
" root-expand-ctx152_0"
|
||||
" phase153_0"
|
||||
" 0-phase154_0"
|
||||
" phase-to-namespace155_0"
|
||||
" phase-level-to-definitions156_0"
|
||||
"(namespace-module-registry$1 the-struct_0)"
|
||||
"(namespace-bulk-binding-registry the-struct_0)"
|
||||
"(namespace-submodule-declarations the-struct_0)"
|
||||
"(namespace-root-namespace the-struct_0)"
|
||||
" declaration-inspector153_0"
|
||||
" inspector154_0"
|
||||
" declaration-inspector157_0"
|
||||
" inspector158_0"
|
||||
"(namespace-available-module-instances the-struct_0)"
|
||||
"(namespace-module-instances the-struct_0)))"
|
||||
" (raise-argument-error 'struct-copy \"namespace?\" the-struct_0)))))"
|
||||
|
@ -14310,33 +14312,33 @@ static const char *startup_source =
|
|||
"(let-values(((m-ns_0)"
|
||||
"(let-values(((the-struct_0) ns_0))"
|
||||
"(if(1/namespace? the-struct_0)"
|
||||
"(let-values(((mpi155_0) mpi_0)"
|
||||
"((source-name156_0)"
|
||||
"(let-values(((mpi159_0) mpi_0)"
|
||||
"((source-name160_0)"
|
||||
"(let-values(((or-part_0)(module-source-name m_0)))"
|
||||
"(if or-part_0"
|
||||
" or-part_0"
|
||||
"(resolved-module-path-root-name(1/module-path-index-resolve mpi_0)))))"
|
||||
"((root-expand-ctx157_0)(box #f))"
|
||||
"((phase158_0) 0-phase_0)"
|
||||
"((0-phase159_0) 0-phase_0)"
|
||||
"((phase-to-namespace160_0)(make-small-hasheqv))"
|
||||
"((phase-level-to-definitions161_0)(make-small-hasheqv))"
|
||||
"((declaration-inspector162_0)(module-inspector m_0))"
|
||||
"((inspector163_0)(make-inspector(module-inspector m_0))))"
|
||||
"((root-expand-ctx161_0)(box #f))"
|
||||
"((phase162_0) 0-phase_0)"
|
||||
"((0-phase163_0) 0-phase_0)"
|
||||
"((phase-to-namespace164_0)(make-small-hasheqv))"
|
||||
"((phase-level-to-definitions165_0)(make-small-hasheqv))"
|
||||
"((declaration-inspector166_0)(module-inspector m_0))"
|
||||
"((inspector167_0)(make-inspector(module-inspector m_0))))"
|
||||
"(namespace1.1"
|
||||
" mpi155_0"
|
||||
" source-name156_0"
|
||||
" root-expand-ctx157_0"
|
||||
" phase158_0"
|
||||
" 0-phase159_0"
|
||||
" phase-to-namespace160_0"
|
||||
" phase-level-to-definitions161_0"
|
||||
" mpi159_0"
|
||||
" source-name160_0"
|
||||
" root-expand-ctx161_0"
|
||||
" phase162_0"
|
||||
" 0-phase163_0"
|
||||
" phase-to-namespace164_0"
|
||||
" phase-level-to-definitions165_0"
|
||||
"(namespace-module-registry$1 the-struct_0)"
|
||||
"(namespace-bulk-binding-registry the-struct_0)"
|
||||
"(namespace-submodule-declarations the-struct_0)"
|
||||
"(namespace-root-namespace the-struct_0)"
|
||||
" declaration-inspector162_0"
|
||||
" inspector163_0"
|
||||
" declaration-inspector166_0"
|
||||
" inspector167_0"
|
||||
"(namespace-available-module-instances the-struct_0)"
|
||||
"(namespace-module-instances the-struct_0)))"
|
||||
" (raise-argument-error 'struct-copy \"namespace?\" the-struct_0)))))"
|
||||
|
@ -14389,49 +14391,57 @@ static const char *startup_source =
|
|||
"(let-values(((unavailable-callback_0) unavailable-callback67_0))"
|
||||
"(let-values()"
|
||||
"(let-values(((mi_0)"
|
||||
"(let-values(((ns164_0) ns_0)"
|
||||
"((name165_0) name_0)"
|
||||
"((0-phase166_0) 0-phase_0)"
|
||||
"((complain-on-failure?167_0) complain-on-failure?_0)"
|
||||
"((check-available-at-phase-level168_0) check-available-at-phase-level_0)"
|
||||
"((unavailable-callback169_0) unavailable-callback_0))"
|
||||
"(let-values(((ns168_0) ns_0)"
|
||||
"((name169_0) name_0)"
|
||||
"((0-phase170_0) 0-phase_0)"
|
||||
"((complain-on-failure?171_0) complain-on-failure?_0)"
|
||||
"((check-available-at-phase-level172_0) check-available-at-phase-level_0)"
|
||||
"((unavailable-callback173_0) unavailable-callback_0))"
|
||||
"(namespace->module-instance.1"
|
||||
" check-available-at-phase-level168_0"
|
||||
" complain-on-failure?167_0"
|
||||
" unavailable-callback169_0"
|
||||
" ns164_0"
|
||||
" name165_0"
|
||||
" 0-phase166_0))))"
|
||||
" check-available-at-phase-level172_0"
|
||||
" complain-on-failure?171_0"
|
||||
" unavailable-callback173_0"
|
||||
" ns168_0"
|
||||
" name169_0"
|
||||
" 0-phase170_0))))"
|
||||
"(if mi_0(module-instance-namespace mi_0) #f))))))))))))"
|
||||
"(define-values"
|
||||
"(namespace-record-module-instance-attached!)"
|
||||
"(lambda(ns_0 mod-name_0 phase_0)"
|
||||
"(begin"
|
||||
"(let-values(((mi_0)"
|
||||
"(let-values(((ns170_0) ns_0)((mod-name171_0) mod-name_0)((phase172_0) phase_0))"
|
||||
"(namespace->module-instance.1 #f #f void ns170_0 mod-name171_0 phase172_0))))"
|
||||
"(let-values(((ns174_0) ns_0)((mod-name175_0) mod-name_0)((phase176_0) phase_0))"
|
||||
"(namespace->module-instance.1 #f #f void ns174_0 mod-name175_0 phase176_0))))"
|
||||
"(set-module-instance-attached?! mi_0 #t)))))"
|
||||
"(define-values"
|
||||
"(module-force-bulk-binding!)"
|
||||
"(lambda(m_0 ns_0)(begin((module-force-bulk-binding m_0)(namespace-bulk-binding-registry ns_0)))))"
|
||||
"(define-values"
|
||||
"(namespace-module-instantiate!.1)"
|
||||
"(lambda(otherwise-available?77_0 run-phase75_0 seen78_0 skip-run?76_0 ns83_0 mpi84_0 instance-phase85_0)"
|
||||
"(lambda(otherwise-available?77_0"
|
||||
" run-phase75_0"
|
||||
" seen78_0"
|
||||
" seen-list79_0"
|
||||
" skip-run?76_0"
|
||||
" ns85_0"
|
||||
" mpi86_0"
|
||||
" instance-phase87_0)"
|
||||
"(begin"
|
||||
" 'namespace-module-instantiate!"
|
||||
"(let-values(((ns_0) ns83_0))"
|
||||
"(let-values(((mpi_0) mpi84_0))"
|
||||
"(let-values(((instance-phase_0) instance-phase85_0))"
|
||||
"(let-values(((ns_0) ns85_0))"
|
||||
"(let-values(((mpi_0) mpi86_0))"
|
||||
"(let-values(((instance-phase_0) instance-phase87_0))"
|
||||
"(let-values(((run-phase_0)(if(eq? run-phase75_0 unsafe-undefined)(namespace-phase ns_0) run-phase75_0)))"
|
||||
"(let-values(((skip-run?_0) skip-run?76_0))"
|
||||
"(let-values(((otherwise-available?_0) otherwise-available?77_0))"
|
||||
"(let-values(((seen_0) seen78_0))"
|
||||
"(let-values(((seen-list_0) seen-list79_0))"
|
||||
"(let-values()"
|
||||
"(let-values((()"
|
||||
"(begin"
|
||||
"(if(1/module-path-index? mpi_0)"
|
||||
"(void)"
|
||||
" (let-values () (error \"not a module path index:\" mpi_0)))"
|
||||
" (let-values () (error \"not a module path index:\" mpi_0)))"
|
||||
"(values))))"
|
||||
"(let-values(((name_0)(1/module-path-index-resolve mpi_0 #t)))"
|
||||
"(let-values(((m_0)(namespace->module ns_0 name_0)))"
|
||||
|
@ -14447,17 +14457,17 @@ static const char *startup_source =
|
|||
" 'instantiate!"
|
||||
"(let-values(((mi_0)"
|
||||
"(let-values(((or-part_0)"
|
||||
"(let-values(((ns179_0) ns_1)"
|
||||
"((name180_0) name_0)"
|
||||
"((instance-phase181_0)"
|
||||
"(let-values(((ns184_0) ns_1)"
|
||||
"((name185_0) name_0)"
|
||||
"((instance-phase186_0)"
|
||||
" instance-phase_1))"
|
||||
"(namespace->module-instance.1"
|
||||
" #f"
|
||||
" #f"
|
||||
" void"
|
||||
" ns179_0"
|
||||
" name180_0"
|
||||
" instance-phase181_0))))"
|
||||
" ns184_0"
|
||||
" name185_0"
|
||||
" instance-phase186_0))))"
|
||||
"(if or-part_0"
|
||||
" or-part_0"
|
||||
"(namespace-create-module-instance!"
|
||||
|
@ -14466,19 +14476,21 @@ static const char *startup_source =
|
|||
" instance-phase_1"
|
||||
" m_0"
|
||||
" mpi_0)))))"
|
||||
"(let-values(((mi173_0) mi_0)"
|
||||
"((ns174_0) ns_1)"
|
||||
"((run-phase175_0) run-phase_1)"
|
||||
"((skip-run?176_0) skip-run?_0)"
|
||||
"((otherwise-available?177_0) otherwise-available?_0)"
|
||||
"((seen178_0) seen_0))"
|
||||
"(let-values(((mi177_0) mi_0)"
|
||||
"((ns178_0) ns_1)"
|
||||
"((run-phase179_0) run-phase_1)"
|
||||
"((skip-run?180_0) skip-run?_0)"
|
||||
"((otherwise-available?181_0) otherwise-available?_0)"
|
||||
"((seen182_0) seen_0)"
|
||||
"((seen-list183_0) seen-list_0))"
|
||||
"(run-module-instance!.1"
|
||||
" otherwise-available?177_0"
|
||||
" run-phase175_0"
|
||||
" seen178_0"
|
||||
" skip-run?176_0"
|
||||
" mi173_0"
|
||||
" ns174_0)))))))"
|
||||
" otherwise-available?181_0"
|
||||
" run-phase179_0"
|
||||
" seen182_0"
|
||||
" seen-list183_0"
|
||||
" skip-run?180_0"
|
||||
" mi177_0"
|
||||
" ns178_0)))))))"
|
||||
"(if(module-cross-phase-persistent? m_0)"
|
||||
"(let-values()"
|
||||
"(instantiate!_0"
|
||||
|
@ -14486,65 +14498,68 @@ static const char *startup_source =
|
|||
" 0"
|
||||
"(let-values(((or-part_0)(namespace-root-namespace ns_0)))"
|
||||
"(if or-part_0 or-part_0 ns_0))))"
|
||||
"(let-values()(instantiate!_0 instance-phase_0 run-phase_0 ns_0)))))))))))))))))))"
|
||||
"(let-values()(instantiate!_0 instance-phase_0 run-phase_0 ns_0))))))))))))))))))))"
|
||||
"(define-values"
|
||||
"(namespace-module-visit!.1)"
|
||||
"(lambda(visit-phase87_0 ns89_0 mpi90_0 instance-phase91_0)"
|
||||
"(lambda(visit-phase89_0 ns91_0 mpi92_0 instance-phase93_0)"
|
||||
"(begin"
|
||||
" 'namespace-module-visit!"
|
||||
"(let-values(((ns_0) ns89_0))"
|
||||
"(let-values(((mpi_0) mpi90_0))"
|
||||
"(let-values(((instance-phase_0) instance-phase91_0))"
|
||||
"(let-values(((ns_0) ns91_0))"
|
||||
"(let-values(((mpi_0) mpi92_0))"
|
||||
"(let-values(((instance-phase_0) instance-phase93_0))"
|
||||
"(let-values(((visit-phase_0)"
|
||||
"(if(eq? visit-phase87_0 unsafe-undefined)(namespace-phase ns_0) visit-phase87_0)))"
|
||||
"(if(eq? visit-phase89_0 unsafe-undefined)(namespace-phase ns_0) visit-phase89_0)))"
|
||||
"(let-values()"
|
||||
"(let-values(((ns182_0) ns_0)"
|
||||
"((mpi183_0) mpi_0)"
|
||||
"((instance-phase184_0) instance-phase_0)"
|
||||
"((temp185_0)(add1 visit-phase_0)))"
|
||||
"(let-values(((ns187_0) ns_0)"
|
||||
"((mpi188_0) mpi_0)"
|
||||
"((instance-phase189_0) instance-phase_0)"
|
||||
"((temp190_0)(add1 visit-phase_0)))"
|
||||
"(namespace-module-instantiate!.1"
|
||||
" #t"
|
||||
" temp185_0"
|
||||
" temp190_0"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" ns182_0"
|
||||
" mpi183_0"
|
||||
" instance-phase184_0))))))))))"
|
||||
" ns187_0"
|
||||
" mpi188_0"
|
||||
" instance-phase189_0))))))))))"
|
||||
"(define-values"
|
||||
"(namespace-module-make-available!.1)"
|
||||
"(lambda(visit-phase93_0 ns95_0 mpi96_0 instance-phase97_0)"
|
||||
"(lambda(visit-phase95_0 ns97_0 mpi98_0 instance-phase99_0)"
|
||||
"(begin"
|
||||
" 'namespace-module-make-available!"
|
||||
"(let-values(((ns_0) ns95_0))"
|
||||
"(let-values(((mpi_0) mpi96_0))"
|
||||
"(let-values(((instance-phase_0) instance-phase97_0))"
|
||||
"(let-values(((ns_0) ns97_0))"
|
||||
"(let-values(((mpi_0) mpi98_0))"
|
||||
"(let-values(((instance-phase_0) instance-phase99_0))"
|
||||
"(let-values(((visit-phase_0)"
|
||||
"(if(eq? visit-phase93_0 unsafe-undefined)(namespace-phase ns_0) visit-phase93_0)))"
|
||||
"(if(eq? visit-phase95_0 unsafe-undefined)(namespace-phase ns_0) visit-phase95_0)))"
|
||||
"(let-values()"
|
||||
"(let-values(((ns186_0) ns_0)"
|
||||
"((mpi187_0) mpi_0)"
|
||||
"((instance-phase188_0) instance-phase_0)"
|
||||
"((temp189_0)(add1 visit-phase_0))"
|
||||
"((temp190_0) #t))"
|
||||
"(let-values(((ns191_0) ns_0)"
|
||||
"((mpi192_0) mpi_0)"
|
||||
"((instance-phase193_0) instance-phase_0)"
|
||||
"((temp194_0)(add1 visit-phase_0))"
|
||||
"((temp195_0) #t))"
|
||||
"(namespace-module-instantiate!.1"
|
||||
" #t"
|
||||
" temp189_0"
|
||||
" temp194_0"
|
||||
" '#hasheq()"
|
||||
" temp190_0"
|
||||
" ns186_0"
|
||||
" mpi187_0"
|
||||
" instance-phase188_0))))))))))"
|
||||
" null"
|
||||
" temp195_0"
|
||||
" ns191_0"
|
||||
" mpi192_0"
|
||||
" instance-phase193_0))))))))))"
|
||||
"(define-values"
|
||||
"(run-module-instance!.1)"
|
||||
"(lambda(otherwise-available?101_0 run-phase99_0 seen102_0 skip-run?100_0 mi107_0 ns108_0)"
|
||||
"(lambda(otherwise-available?103_0 run-phase101_0 seen104_0 seen-list105_0 skip-run?102_0 mi111_0 ns112_0)"
|
||||
"(begin"
|
||||
" 'run-module-instance!"
|
||||
"(let-values(((mi_0) mi107_0))"
|
||||
"(let-values(((ns_0) ns108_0))"
|
||||
"(let-values(((run-phase_0) run-phase99_0))"
|
||||
"(let-values(((skip-run?_0) skip-run?100_0))"
|
||||
"(let-values(((otherwise-available?_0) otherwise-available?101_0))"
|
||||
"(let-values(((seen_0) seen102_0))"
|
||||
"(let-values(((mi_0) mi111_0))"
|
||||
"(let-values(((ns_0) ns112_0))"
|
||||
"(let-values(((run-phase_0) run-phase101_0))"
|
||||
"(let-values(((skip-run?_0) skip-run?102_0))"
|
||||
"(let-values(((otherwise-available?_0) otherwise-available?103_0))"
|
||||
"(let-values(((seen_0) seen104_0))"
|
||||
"(let-values(((seen-list_0) seen-list105_0))"
|
||||
"(let-values()"
|
||||
"(begin"
|
||||
"(if log-performance?(let-values()(start-performance-region 'eval 'requires))(void))"
|
||||
|
@ -14575,7 +14590,7 @@ static const char *startup_source =
|
|||
"(let-values()"
|
||||
"(error"
|
||||
" 'require"
|
||||
" \"import cycle detected; trying to run module being expanded\")))"
|
||||
" \"import cycle detected; trying to run module being expanded\")))"
|
||||
"(values))))"
|
||||
"(let-values(((mpi_0)(namespace-mpi m-ns_0)))"
|
||||
"(let-values(((phase-shift_0) instance-phase_0))"
|
||||
|
@ -14586,7 +14601,11 @@ static const char *startup_source =
|
|||
"(let-values()"
|
||||
"(error"
|
||||
" 'require"
|
||||
" \"import cycle detected during module instantiation\"))"
|
||||
"(apply"
|
||||
" string-append"
|
||||
" \"import cycle detected during module instantiation\\n\""
|
||||
" \" dependency chain:\""
|
||||
"(module-instances->indented-module-names mi_0 seen-list_0))))"
|
||||
"(void))"
|
||||
"(if(module-instance-shifted-requires mi_0)"
|
||||
"(void)"
|
||||
|
@ -14689,7 +14708,8 @@ static const char *startup_source =
|
|||
"(if(pair? lst_1)"
|
||||
"(let-values(((phase+mpis_0)"
|
||||
"(unsafe-car lst_1))"
|
||||
"((rest_0)(unsafe-cdr lst_1)))"
|
||||
"((rest_0)"
|
||||
"(unsafe-cdr lst_1)))"
|
||||
"(let-values((()"
|
||||
"(let-values()"
|
||||
"(let-values((()"
|
||||
|
@ -14728,33 +14748,38 @@ static const char *startup_source =
|
|||
"(let-values()"
|
||||
"(begin"
|
||||
"(let-values()"
|
||||
"(let-values(((ns191_0)"
|
||||
"(let-values(((ns196_0)"
|
||||
" ns_0)"
|
||||
"((req-mpi192_0)"
|
||||
"((req-mpi197_0)"
|
||||
" req-mpi_0)"
|
||||
"((temp193_0)"
|
||||
"((temp198_0)"
|
||||
"(phase+"
|
||||
" instance-phase_0"
|
||||
" req-phase_0))"
|
||||
"((run-phase194_0)"
|
||||
"((run-phase199_0)"
|
||||
" run-phase_0)"
|
||||
"((skip-run?195_0)"
|
||||
"((skip-run?200_0)"
|
||||
" skip-run?_0)"
|
||||
"((otherwise-available?196_0)"
|
||||
"((otherwise-available?201_0)"
|
||||
" otherwise-available?_0)"
|
||||
"((temp197_0)"
|
||||
"((temp202_0)"
|
||||
"(hash-set"
|
||||
" seen_0"
|
||||
" mi_0"
|
||||
" #t)))"
|
||||
" #t))"
|
||||
"((temp203_0)"
|
||||
"(cons"
|
||||
" mi_0"
|
||||
" seen-list_0)))"
|
||||
"(namespace-module-instantiate!.1"
|
||||
" otherwise-available?196_0"
|
||||
" run-phase194_0"
|
||||
" temp197_0"
|
||||
" skip-run?195_0"
|
||||
" ns191_0"
|
||||
" req-mpi192_0"
|
||||
" temp193_0)))"
|
||||
" otherwise-available?201_0"
|
||||
" run-phase199_0"
|
||||
" temp202_0"
|
||||
" temp203_0"
|
||||
" skip-run?200_0"
|
||||
" ns196_0"
|
||||
" req-mpi197_0"
|
||||
" temp198_0)))"
|
||||
"(values)))))"
|
||||
"(values)))))"
|
||||
"(if(not"
|
||||
|
@ -14791,7 +14816,8 @@ static const char *startup_source =
|
|||
"(begin"
|
||||
" 'for-loop"
|
||||
"(if(> pos_0 end_0)"
|
||||
"(let-values(((phase-level_0) pos_0))"
|
||||
"(let-values(((phase-level_0)"
|
||||
" pos_0))"
|
||||
"(let-values((()"
|
||||
"(let-values()"
|
||||
"(let-values((()"
|
||||
|
@ -14913,29 +14939,29 @@ static const char *startup_source =
|
|||
"(module-instance-phase-level-to-state mi_0)"
|
||||
" run-phase-level_0"
|
||||
" 'started)))))))))))))))"
|
||||
"(if log-performance?(let-values()(end-performance-region))(void))))))))))))))"
|
||||
"(if log-performance?(let-values()(end-performance-region))(void)))))))))))))))"
|
||||
"(define-values"
|
||||
"(namespace-visit-available-modules!)"
|
||||
"(let-values(((namespace-visit-available-modules!_0)"
|
||||
"(lambda(ns111_0 run-phase110_0)"
|
||||
"(lambda(ns115_0 run-phase114_0)"
|
||||
"(begin"
|
||||
" 'namespace-visit-available-modules!"
|
||||
"(let-values(((ns_0) ns111_0))"
|
||||
"(let-values(((ns_0) ns115_0))"
|
||||
"(let-values(((run-phase_0)"
|
||||
"(if(eq? run-phase110_0 unsafe-undefined)(namespace-phase ns_0) run-phase110_0)))"
|
||||
"(if(eq? run-phase114_0 unsafe-undefined)(namespace-phase ns_0) run-phase114_0)))"
|
||||
"(let-values()(namespace-run-available-modules! ns_0(add1 run-phase_0)))))))))"
|
||||
"(case-lambda"
|
||||
"((ns_0)(begin(namespace-visit-available-modules!_0 ns_0 unsafe-undefined)))"
|
||||
"((ns_0 run-phase110_0)(namespace-visit-available-modules!_0 ns_0 run-phase110_0)))))"
|
||||
"((ns_0 run-phase114_0)(namespace-visit-available-modules!_0 ns_0 run-phase114_0)))))"
|
||||
"(define-values"
|
||||
"(namespace-run-available-modules!)"
|
||||
"(let-values(((namespace-run-available-modules!_0)"
|
||||
"(lambda(ns113_0 run-phase112_0)"
|
||||
"(lambda(ns117_0 run-phase116_0)"
|
||||
"(begin"
|
||||
" 'namespace-run-available-modules!"
|
||||
"(let-values(((ns_0) ns113_0))"
|
||||
"(let-values(((ns_0) ns117_0))"
|
||||
"(let-values(((run-phase_0)"
|
||||
"(if(eq? run-phase112_0 unsafe-undefined)(namespace-phase ns_0) run-phase112_0)))"
|
||||
"(if(eq? run-phase116_0 unsafe-undefined)(namespace-phase ns_0) run-phase116_0)))"
|
||||
"(let-values()"
|
||||
"(registry-call-with-lock"
|
||||
"(namespace-module-registry$1 ns_0)"
|
||||
|
@ -14979,23 +15005,24 @@ static const char *startup_source =
|
|||
"(let-values()"
|
||||
"(begin"
|
||||
"(let-values()"
|
||||
"(let-values(((mi198_0)"
|
||||
"(let-values(((mi204_0)"
|
||||
" mi_0)"
|
||||
"((ns199_0)"
|
||||
"((ns205_0)"
|
||||
" ns_0)"
|
||||
"((run-phase200_0)"
|
||||
"((run-phase206_0)"
|
||||
" run-phase_0)"
|
||||
"((temp201_0)"
|
||||
"((temp207_0)"
|
||||
" #f)"
|
||||
"((temp202_0)"
|
||||
"((temp208_0)"
|
||||
" #f))"
|
||||
"(run-module-instance!.1"
|
||||
" temp202_0"
|
||||
" run-phase200_0"
|
||||
" temp208_0"
|
||||
" run-phase206_0"
|
||||
" '#hasheq()"
|
||||
" temp201_0"
|
||||
" mi198_0"
|
||||
" ns199_0)))"
|
||||
" null"
|
||||
" temp207_0"
|
||||
" mi204_0"
|
||||
" ns205_0)))"
|
||||
"(values)))))"
|
||||
"(values)))))"
|
||||
"(if(not #f)"
|
||||
|
@ -15009,42 +15036,42 @@ static const char *startup_source =
|
|||
" loop_0)))))))))))"
|
||||
"(case-lambda"
|
||||
"((ns_0)(begin(namespace-run-available-modules!_0 ns_0 unsafe-undefined)))"
|
||||
"((ns_0 run-phase112_0)(namespace-run-available-modules!_0 ns_0 run-phase112_0)))))"
|
||||
"((ns_0 run-phase116_0)(namespace-run-available-modules!_0 ns_0 run-phase116_0)))))"
|
||||
"(define-values"
|
||||
"(namespace-primitive-module-visit!)"
|
||||
"(lambda(ns_0 name_0)"
|
||||
"(begin"
|
||||
"(let-values(((mi_0)(hash-ref(namespace-module-instances ns_0)(1/make-resolved-module-path name_0))))"
|
||||
"(let-values(((mi203_0) mi_0)((ns204_0) ns_0)((temp205_0) 1)((temp206_0) #f)((temp207_0) #t))"
|
||||
"(run-module-instance!.1 temp207_0 temp205_0 '#hasheq() temp206_0 mi203_0 ns204_0))))))"
|
||||
"(let-values(((mi209_0) mi_0)((ns210_0) ns_0)((temp211_0) 1)((temp212_0) #f)((temp213_0) #t))"
|
||||
"(run-module-instance!.1 temp213_0 temp211_0 '#hasheq() null temp212_0 mi209_0 ns210_0))))))"
|
||||
"(define-values"
|
||||
"(namespace-module-use->module+linklet-instances.1)"
|
||||
"(lambda(phase-shift116_0 shift-from114_0 shift-to115_0 ns120_0 mu121_0)"
|
||||
"(lambda(phase-shift120_0 shift-from118_0 shift-to119_0 ns124_0 mu125_0)"
|
||||
"(begin"
|
||||
" 'namespace-module-use->module+linklet-instances"
|
||||
"(let-values(((ns_0) ns120_0))"
|
||||
"(let-values(((mu_0) mu121_0))"
|
||||
"(let-values(((shift-from_0) shift-from114_0))"
|
||||
"(let-values(((shift-to_0) shift-to115_0))"
|
||||
"(let-values(((phase-shift_0) phase-shift116_0))"
|
||||
"(let-values(((ns_0) ns124_0))"
|
||||
"(let-values(((mu_0) mu125_0))"
|
||||
"(let-values(((shift-from_0) shift-from118_0))"
|
||||
"(let-values(((shift-to_0) shift-to119_0))"
|
||||
"(let-values(((phase-shift_0) phase-shift120_0))"
|
||||
"(let-values()"
|
||||
"(let-values(((mod_0)(module-use-module mu_0)))"
|
||||
"(let-values(((mi_0)"
|
||||
"(let-values(((ns208_0) ns_0)"
|
||||
"((temp209_0)"
|
||||
"(let-values(((ns214_0) ns_0)"
|
||||
"((temp215_0)"
|
||||
"(1/module-path-index-resolve"
|
||||
"(if shift-from_0"
|
||||
"(module-path-index-shift mod_0 shift-from_0 shift-to_0)"
|
||||
" mod_0)))"
|
||||
"((phase-shift210_0) phase-shift_0)"
|
||||
"((temp211_0) #t))"
|
||||
"((phase-shift216_0) phase-shift_0)"
|
||||
"((temp217_0) #t))"
|
||||
"(namespace->module-instance.1"
|
||||
" #f"
|
||||
" temp211_0"
|
||||
" temp217_0"
|
||||
" void"
|
||||
" ns208_0"
|
||||
" temp209_0"
|
||||
" phase-shift210_0))))"
|
||||
" ns214_0"
|
||||
" temp215_0"
|
||||
" phase-shift216_0))))"
|
||||
"(let-values(((m-ns_0)(module-instance-namespace mi_0)))"
|
||||
"(let-values(((d_0)"
|
||||
"(small-hash-ref"
|
||||
|
@ -15222,6 +15249,31 @@ static const char *startup_source =
|
|||
"(hash-iterate-first ht_0))))))"
|
||||
"(begin(set-module-access! m_0 access_0) access_0)))))"
|
||||
"(define-values"
|
||||
"(module-instances->indented-module-names)"
|
||||
"(lambda(mi_0 seen-list_0)"
|
||||
"(begin"
|
||||
"(let-values(((mi->name_0)"
|
||||
"(lambda(mi_1)"
|
||||
"(begin"
|
||||
" 'mi->name"
|
||||
"(format"
|
||||
" \"\\n ~a\""
|
||||
"(1/module-path-index-resolve(namespace-mpi(module-instance-namespace mi_1))))))))"
|
||||
"(cons"
|
||||
"(mi->name_0 mi_0)"
|
||||
"((letrec-values(((loop_0)"
|
||||
"(lambda(seen-list_1)"
|
||||
"(begin"
|
||||
" 'loop"
|
||||
"(if(null? seen-list_1)"
|
||||
"(let-values() '())"
|
||||
"(if(eq? mi_0(car seen-list_1))"
|
||||
"(let-values()(list(mi->name_0 mi_0)))"
|
||||
"(let-values()"
|
||||
"(cons(mi->name_0(car seen-list_1))(loop_0(cdr seen-list_1))))))))))"
|
||||
" loop_0)"
|
||||
" seen-list_0))))))"
|
||||
"(define-values"
|
||||
"(binding->module-instance)"
|
||||
"(lambda(b_0 ns_0 phase_0 id_0)"
|
||||
"(begin"
|
||||
|
@ -28232,6 +28284,7 @@ static const char *startup_source =
|
|||
" #t"
|
||||
" run-phase248_0"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" m-ns245_0"
|
||||
" interned-mpi246_0"
|
||||
|
@ -49034,6 +49087,7 @@ static const char *startup_source =
|
|||
" #t"
|
||||
" unsafe-undefined"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" src-namespace35_0"
|
||||
" mpi36_0"
|
||||
|
@ -51891,6 +51945,7 @@ static const char *startup_source =
|
|||
" temp15_0"
|
||||
" phase14_0"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" ns11_0"
|
||||
" mpi12_0"
|
||||
|
@ -51905,6 +51960,7 @@ static const char *startup_source =
|
|||
" #t"
|
||||
" phase19_0"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" ns16_0"
|
||||
" mpi17_0"
|
||||
|
@ -51967,6 +52023,7 @@ static const char *startup_source =
|
|||
" temp28_0"
|
||||
" phase27_0"
|
||||
" '#hasheq()"
|
||||
" null"
|
||||
" #f"
|
||||
" ns24_0"
|
||||
" mpi25_0"
|
||||
|
|
Loading…
Reference in New Issue
Block a user