Hi,

i think i found a bug in the handling of external dependencies (via register-external-file) in compiler/cm. Currently if an external dependency gets deleted after the registering file was compiled, it is not recompiled because a missing file does not trigger a file changed or timestamp newer condition.

With the attached patch a missing file is simply treated as newer than everything. Would that be the correct behavior?


Reproduce with:

;; ----- test.rkt
#lang racket

(require (for-syntax compiler/cm-accomplice))

(begin-for-syntax
 (printf "compiled\n")

 (register-external-file (path->complete-path "ext-dep"))
 (with-output-to-file
     "ext-dep" #:exists 'replace values))


;; --- current
# raco  make sample.rkt
compiled
# raco  make sample.rkt

# rm ext-dep
# raco  make sample.rkt
<< Missing "compiled"


;; --- patched
# raco  make sample.rkt
compiled
# raco  make sample.rkt

# rm ext-dep
# raco  make sample.rkt
compiled



--
---------------------------------------------------------
Tobias Hammer
DLR / Robotics and Mechatronics Center (RMC)
Muenchner Str. 20, D-82234 Wessling
Tel.: 08153/28-1487
Mail: tobias.ham...@dlr.de

Attachment: ext-dep.patch
Description: Binary data

_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to