From 1bbd6f0ec4fe54038c64d56b4eeb4f0fc29579c4 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 22 Jul 2010 18:40:29 -0500 Subject: [PATCH] fix `file-stamp-in-paths', which affects DrRacket's auto compilation Merge to 5.0.1 (cherry picked from commit 7c4eddc7085c563bc71e1c65f6c5bc0cebc0adbf) --- collects/compiler/cm.rkt | 50 ++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/collects/compiler/cm.rkt b/collects/compiler/cm.rkt index 7a71c4b364..51d30fe703 100644 --- a/collects/compiler/cm.rkt +++ b/collects/compiler/cm.rkt @@ -56,29 +56,35 @@ p (rkt->ss p)))] [modes (use-compiled-file-paths)] - [get-zo-date (lambda (name) - (ormap - (lambda (mode) - (file-or-directory-modify-seconds - (build-path - base - mode - (path-add-suffix name #".zo")) - #f - (lambda () #f))) - modes))] - [main-zo-date (and (or p-date (not alt-date)) - (get-zo-date name))] - [alt-zo-date (and (or alt-date - (and (not p-date) - (not alt-date) - (not main-zo-date))) - (get-zo-date (rkt->ss name)))] - [zo-date (or main-zo-date alt-zo-date)] + [get-zo-date+mode (lambda (name) + (ormap + (lambda (mode) + (let ([v (file-or-directory-modify-seconds + (build-path + base + mode + (path-add-suffix name #".zo")) + #f + (lambda () #f))]) + (and v (cons v mode)))) + modes))] + [main-zo-date+mode (and (or p-date (not alt-date)) + (get-zo-date+mode name))] + [alt-zo-date+mode (and (or alt-date + (and (not p-date) + (not alt-date) + (not main-zo-date+mode))) + (get-zo-date+mode (rkt->ss name)))] + [zo-date+mode (or main-zo-date+mode alt-zo-date+mode)] + [zo-date (and zo-date+mode (car zo-date+mode))] [get-zo-path (lambda () - (if main-zo-date - (path-add-suffix name #".zo") - (path-add-suffix (rkt->ss name) #".zo")))]) + (let-values ([(name mode) + (if main-zo-date+mode + (values (path-add-suffix name #".zo") + (cdr main-zo-date+mode)) + (values (path-add-suffix (rkt->ss name) #".zo") + (cdr (cdr alt-zo-date+mode))))]) + (build-path base mode name)))]) (cond [(and zo-date (or (not date)