]> git.eshelyaron.com Git - emacs.git/commitdiff
compile-async: Don't error out on deferred compilation after load
authorStefan Kangas <stefan@marxist.se>
Thu, 19 Nov 2020 21:10:20 +0000 (22:10 +0100)
committerStefan Kangas <stefan@marxist.se>
Fri, 20 Nov 2020 19:55:09 +0000 (20:55 +0100)
* lisp/emacs-lisp/comp.el (native-compile-async): Update
comp-files-queue when deferred compilation is requested.  (Bug#44676)

lisp/emacs-lisp/comp.el

index 633ededebe43b85b72db5759d7019ae2a1e6640e..095bd63a10f8e8ac8dfeaa7c00a156e366db47a4 100644 (file)
@@ -3511,14 +3511,12 @@ LOAD can be nil t or 'late."
                        (list "Path not a file nor directory" path)))))
     (dolist (file files)
       (if-let ((entry (cl-find file comp-files-queue :key #'car :test #'string=)))
-          ;; When no load is specified (plain async compilation) we
-          ;; consider valid the one previously queued, otherwise we
-          ;; check for coherence (bug#40602).
-          (cl-assert (or (null load)
-                         (eq load (cdr entry)))
-                     nil "Trying to queue %s with LOAD %s but this is already \
-queued with LOAD %"
-                     file load (cdr entry))
+          ;; Most likely the byte-compiler has requested a deferred
+          ;; compilation, so update `comp-files-queue' to reflect that.
+          (unless (or (null load)
+                      (eq load (cdr entry)))
+            (cl-substitute (cons file load) (car entry) comp-files-queue
+                           :key #'car :test #'string=))
         ;; Make sure we are not already compiling `file' (bug#40838).
         (unless (or (gethash file comp-async-compilations)
                     ;; Also exclude files from deferred compilation if