From b4b723df4e5d27745608f947c362cb5345a0b25e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 4 Oct 2012 06:40:08 -0600 Subject: [PATCH] fix `in-directory' Closes PR 13163 --- collects/racket/private/for.rkt | 6 ++++-- collects/tests/racket/file.rktl | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/collects/racket/private/for.rkt b/collects/racket/private/for.rkt index c6ec12afb1..c5578ce67f 100644 --- a/collects/racket/private/for.rkt +++ b/collects/racket/private/for.rkt @@ -1970,10 +1970,12 @@ (call-with-continuation-prompt (lambda () (define (reply v) - (let/cc k + (call/cc + (lambda (k) (abort-current-continuation in-directory-tag - (lambda () (cons (lambda () v) k))))) + (lambda () (cons (lambda () v) k)))) + in-directory-tag)) (let loop ([dir (path->complete-path (or dir (current-directory)))] [prefix dir]) (for ([i (in-list (directory-list dir))]) diff --git a/collects/tests/racket/file.rktl b/collects/tests/racket/file.rktl index cc6d69cc36..3d61ea58b0 100644 --- a/collects/tests/racket/file.rktl +++ b/collects/tests/racket/file.rktl @@ -1544,6 +1544,16 @@ (delete-directory sub) (delete-directory/files tmp)) +(let () + (define tmp (build-path (build-path (find-system-path 'temp-dir)) + (format "in-dir-tmp-dir~a" (random 1000)))) + (define sub (build-path tmp "sub")) + (make-directory* tmp) + (make-directory* sub) + (test (list sub) 'in-directory (for/list ([v (in-directory tmp)]) v)) + (delete-directory sub) + (delete-directory/files tmp)) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs)