emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp dc39351: Issue a warning when eln look-up fails due


From: Andrea Corallo
Subject: feature/native-comp dc39351: Issue a warning when eln look-up fails due to missing .el source file.
Date: Thu, 1 Apr 2021 15:49:58 -0400 (EDT)

branch: feature/native-comp
commit dc393517ca1cfef7770bffdfe2b7fd3c2c5e7bbf
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    Issue a warning when eln look-up fails due to missing .el source file.
    
        * lisp/emacs-lisp/comp.el (comp-warning-on-missing-source): New
        customize.
        * src/lread.c (maybe_swap_for_eln): Issue a warning when eln
        look-up fails due to missing .el source file.
        * src/comp.c (syms_of_comp): Define
        'Qcomp_warning_on_missing_source'.
---
 lisp/emacs-lisp/comp.el |  7 +++++++
 src/comp.c              |  3 ++-
 src/lread.c             | 12 ++++++++++--
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 213eb7b..7f41a97 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -180,6 +180,13 @@ the .eln output directory."
   :type 'boolean
   :version "28.1")
 
+(defcustom comp-warning-on-missing-source t
+  "Emit a warning if a byte-code file being loaded has no corresponding source.
+The source file is necessary for native code file look-up and deferred
+compilation mechanism."
+  :type 'boolean
+  :version "28.1")
+
 (defvar no-native-compile nil
   "Non-nil to prevent native-compiling of Emacs Lisp code.
 Note that when `no-byte-compile' is set to non-nil it overrides the value of
diff --git a/src/comp.c b/src/comp.c
index eb734d5..67c8e39 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -5254,7 +5254,8 @@ compiled one.  */);
   DEFSYM (Qlate, "late");
   DEFSYM (Qlambda_fixup, "lambda-fixup");
   DEFSYM (Qgccjit, "gccjit");
-  DEFSYM (Qcomp_subr_trampoline_install, "comp-subr-trampoline-install")
+  DEFSYM (Qcomp_subr_trampoline_install, "comp-subr-trampoline-install");
+  DEFSYM (Qcomp_warning_on_missing_source, "comp-warning-on-missing-source");
 
   /* To be signaled by the compiler.  */
   DEFSYM (Qnative_compiler_error, "native-compiler-error");
diff --git a/src/lread.c b/src/lread.c
index ec6f092..156df73 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1674,8 +1674,16 @@ maybe_swap_for_eln (bool no_native, Lisp_Object 
*filename, int *fd,
     {
       src_name = concat2 (src_name, build_string (".gz"));
       if (NILP (Ffile_exists_p (src_name)))
-       /* Can't find the corresponding source file.  */
-       return;
+       {
+         if (!NILP (find_symbol_value (Qcomp_warning_on_missing_source)))
+           call2 (intern_c_string ("display-warning"),
+                  Qcomp,
+                  CALLN (Fformat,
+                         build_string ("Cannot look-up eln file as no source "
+                                       "file was found for %s"),
+                         *filename));
+         return;
+       }
     }
   Lisp_Object eln_rel_name = Fcomp_el_to_eln_rel_filename (src_name);
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]