diff options
Diffstat (limited to 'lisp/progmodes/cc-bytecomp.el')
-rw-r--r-- | lisp/progmodes/cc-bytecomp.el | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el index 3f7caf3c2e9..edbac64eadb 100644 --- a/lisp/progmodes/cc-bytecomp.el +++ b/lisp/progmodes/cc-bytecomp.el @@ -1,4 +1,4 @@ -;;; cc-bytecomp.el --- compile time setup for proper compilation +;;; cc-bytecomp.el --- compile time setup for proper compilation -*- lexical-binding: t -*- ;; Copyright (C) 2000-2021 Free Software Foundation, Inc. @@ -85,8 +85,8 @@ (defvar cc-bytecomp-environment-set nil) -(defmacro cc-bytecomp-debug-msg (&rest args) - (ignore args) +(defmacro cc-bytecomp-debug-msg (&rest _args) ; Change to ARGS when needed. + ;; (declare (debug t)) ;;`(message ,@args) ) @@ -97,6 +97,8 @@ ;; compilation can trigger loading (various `require' type forms) ;; and loading can trigger compilation (the package manager does ;; this). We walk the lisp stack if necessary. + ;; Never native compile to allow cc-defs.el:2345 hack. + (declare (speed -1)) (cond ((and load-in-progress (boundp 'byte-compile-dest-file) @@ -108,14 +110,15 @@ (memq (cadr elt) '(load require byte-compile-file byte-recompile-directory - batch-byte-compile))))) + batch-byte-compile batch-native-compile))))) (setq n (1+ n))) (cond ((memq (cadr elt) '(load require)) 'loading) ((memq (cadr elt) '(byte-compile-file byte-recompile-directory - batch-byte-compile)) + batch-byte-compile + batch-native-compile)) 'compiling) (t ; Can't happen. (message "cc-bytecomp-compiling-or-loading: System flags spuriously set") @@ -284,7 +287,9 @@ perhaps a `cc-bytecomp-restore-environment' is forgotten somewhere")) (cons cc-file cc-bytecomp-loaded-files)) (cc-bytecomp-debug-msg "cc-bytecomp-load: Loading %S" cc-file) - (load cc-file nil t t) + ;; native-comp may async compile also intalled el.gz + ;; files therefore we may have to load here other el.gz. + (load cc-part nil t) (cc-bytecomp-debug-msg "cc-bytecomp-load: Loaded %S" cc-file))) (cc-bytecomp-setup-environment) @@ -297,6 +302,7 @@ during compilation, but compile in a `require'. Don't use within Having cyclic cc-require's will result in infinite recursion. That's somewhat intentional." + (declare (debug t)) `(progn (eval-when-compile (cc-bytecomp-load (symbol-name ,cc-part))) @@ -309,6 +315,7 @@ time, (ii) generate code to load the file at load time. CC-PART will normally be a quoted name such as \\='cc-fix. CONDITION should not be quoted." + (declare (debug t)) (if (eval condition) (progn (cc-bytecomp-load (symbol-name (eval cc-part))) @@ -323,6 +330,7 @@ after the loading of FILE. CC-PART will normally be a quoted name such as \\='cc-fix. FILE should be a string. CONDITION should not be quoted." + (declare (debug t)) (if (eval condition) (progn (cc-bytecomp-load (symbol-name (eval cc-part))) @@ -333,6 +341,7 @@ should be a string. CONDITION should not be quoted." (defmacro cc-provide (feature) "A replacement for the `provide' form that restores the environment after the compilation. Don't use within `eval-when-compile'." + (declare (debug t)) `(progn (eval-when-compile (cc-bytecomp-restore-environment)) (provide ,feature))) @@ -344,6 +353,7 @@ during compilation. Don't use outside `eval-when-compile' or Having cyclic cc-load's will result in infinite recursion. That's somewhat intentional." + (declare (debug t)) `(or (and (featurep 'cc-bytecomp) (cc-bytecomp-load ,cc-part)) (load ,cc-part nil t nil))) @@ -352,6 +362,7 @@ somewhat intentional." "Force loading of the corresponding .el file in the current directory during compilation, but do a compile time `require' otherwise. Don't use within `eval-when-compile'." + (declare (debug t)) `(eval-when-compile (if (and (fboundp 'cc-bytecomp-is-compiling) (cc-bytecomp-is-compiling)) @@ -363,6 +374,7 @@ use within `eval-when-compile'." "Do a `require' of an external package. This restores and sets up the compilation environment before and afterwards. Don't use within `eval-when-compile'." + (declare (debug t)) `(progn (eval-when-compile (cc-bytecomp-restore-environment)) (require ,feature) @@ -371,6 +383,7 @@ afterwards. Don't use within `eval-when-compile'." (defmacro cc-bytecomp-defvar (var) "Binds the symbol as a variable during compilation of the file, to silence the byte compiler. Don't use within `eval-when-compile'." + (declare (debug nil)) `(eval-when-compile (if (boundp ',var) (cc-bytecomp-debug-msg @@ -398,6 +411,7 @@ definition. That means that this macro will not shut up warnings about incorrect number of arguments. It's dangerous to try to replace existing functions since the byte compiler might need the definition at compile time, e.g. for macros and inline functions." + (declare (debug nil)) `(eval-when-compile (if (fboundp ',fun) (cc-bytecomp-debug-msg @@ -419,6 +433,7 @@ at compile time, e.g. for macros and inline functions." (defmacro cc-bytecomp-put (symbol propname value) "Set a property on a symbol during compilation (and evaluation) of the file. Don't use outside `eval-when-compile'." + (declare (debug t)) `(eval-when-compile (if (not (assoc (cons ,symbol ,propname) cc-bytecomp-original-properties)) (progn @@ -439,6 +454,7 @@ the file. Don't use outside `eval-when-compile'." the compilation. This is the same as using `boundp' but additionally exclude any variables that have been bound during compilation with `cc-bytecomp-defvar'." + (declare (debug t)) (if (and (cc-bytecomp-is-compiling) (memq (car (cdr symbol)) cc-bytecomp-unbound-variables)) nil @@ -449,6 +465,7 @@ exclude any variables that have been bound during compilation with the compilation. This is the same as using `fboundp' but additionally exclude any functions that have been bound during compilation with `cc-bytecomp-defun'." + (declare (debug t)) (let (fun-elem) (if (and (cc-bytecomp-is-compiling) (setq fun-elem (assq (car (cdr symbol)) |