[asdf-devel] Repeat file compilation

Сергей Катревич linkfly1 at newmail.ru
Wed Oct 5 21:25:12 UTC 2011


Hi Lispers!

I research sources ASDF Library. I am not understand: Why repeat the compilation of a file (below code and details)?

(defmethod perform-with-restarts ((o compile-op) (c cl-source-file))
  (loop :with state = :initial
    :until (or (eq state :success)
               (eq state :failure)) :do
    (case state
      (:recompiled
       (setf state :failure)
       (call-next-method)
       (setf state :success))
      (:failed-compile
       (setf state :recompiled)
       (perform-with-restarts o c))
      (t
       (with-simple-restart
           (try-recompiling "Try recompiling ~a"
                            (component-name c))
         (setf state :failed-compile)
         (call-next-method)
         (setf state :success))))))

This is bad for me: my code evaluated twice (eval-when (:compile-toplevel) ...) in a file that i am recompiled throghout select try-recompiling restart.

Details. 
1. (setf state :failed-compiled)
2. error compilation.
3. select try-recompiling restart.
4. next iteration.
5. (setf state :recompiled)
6. recursive call: (perform-with-restarts o c)
     (in recusive-call)
     6.1 (setf state :failed-compile)
     6.2 (call-next-method) = success compile
     6.3 (setf state :success)
     6.4 next iteration and exit call.
7. next iteration
8. (setf state :failure)
9. (call-next-method) - second compilation!   ???

I understand that (call-next-method) conceptual feature. But the file should not compile twice! 
Suggestions?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20111006/88ccd2dc/attachment.html>


More information about the asdf-devel mailing list