Fixed module-specs->non-lib-paths which was very broken in several different ways (PR10305)

svn: r15180
This commit is contained in:
Eli Barzilay 2009-06-15 21:44:54 +00:00
parent 5f7e052469
commit 233df48709

View File

@ -236,8 +236,8 @@
(define (module-specs->non-lib-paths mods) (define (module-specs->non-lib-paths mods)
(define (lib? x) (define (lib? x)
(if (module-path-index? x) (if (module-path-index? x)
(let-values ([(m base) (module-path-index-split x)]) (lib? m)) (let-values ([(m base) (module-path-index-split x)]) (lib? m))
(and (pair? x) (eq? 'lib (car x))))) (or (symbol? x) (and (pair? x) (eq? 'lib (car x))))))
;; turns a module spec to a simple one (except for lib specs) ;; turns a module spec to a simple one (except for lib specs)
(define (simple-modspec mod) (define (simple-modspec mod)
(cond [(and (pair? mod) (eq? 'lib (car mod))) #f] (cond [(and (pair? mod) (eq? 'lib (car mod))) #f]
@ -253,25 +253,22 @@
[(and (eq? 'prefix (car mod)) (pair? (cddr mod))) [(and (eq? 'prefix (car mod)) (pair? (cddr mod)))
(simple-modspec (caddr mod))] (simple-modspec (caddr mod))]
[else #f])) [else #f]))
(let loop ([todo (filter values (map simple-modspec mods))] (let loop ([todo (filter-map simple-modspec mods)]
[r '()]) [r '()])
(cond (cond
[(null? todo) r] [(null? todo) r]
[(member (car todo) r) (loop (cdr todo) r)] [(member (car todo) r) (loop (cdr todo) r)]
[else [else
(let ([path (car todo)]) (let ([path (car todo)])
(loop (filter values (loop (append (cdr todo)
(map (lambda (i) (filter-map
(simplify-path* (resolve-module-path-index i path))) (lambda (i)
(filter (lambda (i) (simplify-path* (resolve-module-path-index i path)))
(and (module-path-index? i) (not (lib? i)))) (filter (lambda (i)
(apply append (and (module-path-index? i) (not (lib? i))))
(call-with-values (append-map cdr (module-compiled-imports
(lambda () (get-module-code path))))))
(module-compiled-imports (cons path r)))])))
(get-module-code (car todo))))
list)))))
(cons path r)))])))
;; Resources ---------------------------------------------------------------- ;; Resources ----------------------------------------------------------------