mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-25 04:55:04 +02:00
Enhance dependency resolution of import sets
Allow the dependency resolution front-end to handle libraries that contain import sets that are not just a library name, such as `only` or `except`.
This commit is contained in:
parent
36a74053c2
commit
0dadb5a730
1 changed files with 10 additions and 9 deletions
|
@ -47,7 +47,6 @@
|
||||||
lib:idb:id->import
|
lib:idb:id->import
|
||||||
)
|
)
|
||||||
(begin
|
(begin
|
||||||
; (define read cyc-read)
|
|
||||||
|
|
||||||
(define (library? ast)
|
(define (library? ast)
|
||||||
(tagged-list? 'define-library ast))
|
(tagged-list? 'define-library ast))
|
||||||
|
@ -314,20 +313,22 @@
|
||||||
(lambda (import-sets)
|
(lambda (import-sets)
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (i)
|
(lambda (i)
|
||||||
(let ((import-set (lib:list->import-set i)))
|
(let* ((import-set (lib:list->import-set i))
|
||||||
|
(lib-name (lib:import->library-name import-set)))
|
||||||
(cond
|
(cond
|
||||||
;; Prevent cycles by only processing new libraries
|
;; Prevent cycles by only processing new libraries
|
||||||
((not (assoc import-set libraries/deps))
|
((not (assoc lib-name libraries/deps))
|
||||||
;; Find all dependencies of i (IE, libraries it imports)
|
;; Find all dependencies of i (IE, libraries it imports)
|
||||||
(let ((deps (lib:read-imports import-set))
|
(let* ((deps (lib:read-imports import-set))
|
||||||
(lib-name (lib:import->library-name import-set)))
|
(dep-libs (map lib:import->library-name deps)))
|
||||||
(set! libraries/deps (cons (cons lib-name deps) libraries/deps))
|
(set!
|
||||||
(find-deps! deps)
|
libraries/deps
|
||||||
|
(cons (cons lib-name dep-libs) libraries/deps))
|
||||||
|
(find-deps! dep-libs)
|
||||||
)))))
|
)))))
|
||||||
import-sets))))
|
import-sets))))
|
||||||
(find-deps! imports)
|
(find-deps! imports)
|
||||||
;`((deps ,libraries/deps) ; DEBUG
|
;`((deps ,libraries/deps)) ; DEBUG
|
||||||
; (result ,(lib:get-dep-list libraries/deps)))
|
|
||||||
(lib:get-dep-list libraries/deps)
|
(lib:get-dep-list libraries/deps)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue