diff --git a/pkgs/racket-test/tests/syntax/modcollapse.rkt b/pkgs/racket-test/tests/syntax/modcollapse.rkt index 4dd5e95da5..2b315b61c1 100644 --- a/pkgs/racket-test/tests/syntax/modcollapse.rkt +++ b/pkgs/racket-test/tests/syntax/modcollapse.rkt @@ -122,3 +122,24 @@ (check (collapse-module-path-index submod-submod-foo here) `(submod ,(build-path here-dir "foo.rkt") test)) + + +(define dirrel (module-path-index-join + "x/banana.rkt" + self)) +(check (collapse-module-path-index dirrel) + "x/banana.rkt") +(check (collapse-module-path-index dirrel + here) + (build-path here-dir "x/banana.rkt")) + +(define rel-dirrel (module-path-index-join + "apple.rkt" + (module-path-index-join + "x/banana.rkt" + self))) +(check (collapse-module-path-index rel-dirrel) + "x/apple.rkt") +(check (collapse-module-path-index rel-dirrel + here) + (build-path here-dir "x" "apple.rkt")) diff --git a/racket/collects/syntax/private/modcollapse-noctc.rkt b/racket/collects/syntax/private/modcollapse-noctc.rkt index 0c1f87f75b..8124605758 100644 --- a/racket/collects/syntax/private/modcollapse-noctc.rkt +++ b/racket/collects/syntax/private/modcollapse-noctc.rkt @@ -420,7 +420,7 @@ Use syntax/modcollapse instead. ;; Unix-style relative path string (cond [(string? prev) - (define l (drop-right (explode-relpath-string s) 1)) + (define l (drop-right (explode-relpath-string prev) 1)) (if (null? l) s (string-join (append @@ -428,7 +428,7 @@ Use syntax/modcollapse instead. (case e [(same) "."] [(up) ".."] - [else e])) + [else (path-element->string e)])) (list s)) "/"))] [(path? prev) diff --git a/racket/collects/syntax/private/modhelp.rkt b/racket/collects/syntax/private/modhelp.rkt index 8c4a188a96..5255f274f3 100644 --- a/racket/collects/syntax/private/modhelp.rkt +++ b/racket/collects/syntax/private/modhelp.rkt @@ -6,7 +6,7 @@ (define (explode-relpath-string p) (map (lambda (p) (cond [(assoc p '((#"." . same) (#".." . up))) => cdr] - [else (bytes->path p)])) + [else (bytes->path-element p)])) (regexp-split #rx#"/+" (string->bytes/utf-8 p)))) (define (module-path-v-string? v)