[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load doe
From: |
Adam Porter |
Subject: |
bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling |
Date: |
Mon, 13 Sep 2021 08:41:13 -0500 |
#+TITLE: Native-comp macro-defining macro bug
Hi Andrea, et al,
This provides a way to reproduce a bug I seem to have found in the
native-comp feature in this Emacs version:
: GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.5, cairo version 1.16.0) of 2021-09-06
* Summary
The function ~emacs-lisp-native-compile-and-load~ does not seem to
ensure that macros defined in a ~require~'d file are defined before
compiling the current buffer.
* Steps to reproduce
1. In an empty directory:
a. Make file =foo.el= with these contents:
#+begin_src elisp
(defmacro foo-define-definer (name prefix)
`(defmacro ,name (name args &rest body)
(let ((function-name (intern (concat ,prefix "-" (symbol-name name)))))
`(defun ,function-name ,args ,@body))))
(provide 'foo)
#+end_src
b. Make file =bar.el= with these contents:
#+begin_src elisp
(require 'foo)
(foo-define-definer bar-define-key "bar-key")
(bar-define-key baz (&rest args)
(message "%S" args))
(bar-key-baz 'ARG)
#+end_src
2. ~(push default-directory load-path)~.
3. ~(find-file "bar.el")~.
4. =M-x emacs-lisp-native-compile-and-load RET=.
*Expected results:*
+ Compilation succeeds without errors or warnings.
+ Macro ~bar-define-key~ is defined.
+ Function ~bar-key-baz~ is defined.
*Actual results:* Neither the macro nor the function are defined, and
these warnings are displayed in =*Compile-Log*=:
#+begin_example
Compiling file
/home/me/src/emacs/misc/ecms/native-comp-macro-defining-macro-bug/bar.el
at Mon Sep 13 13:16:46 2021
bar.el:3:21: Warning: reference to free variable ‘bar-define-key’
bar.el:5:17: Warning: reference to free variable ‘baz’
bar.el:5:28: Warning: reference to free variable ‘args’
In end of data:
bar.el:8:2: Warning: the function ‘bar-key-baz’ is not known to be defined.
bar.el:5:22: Warning: the function ‘&rest’ is not known to be defined.
bar.el:5:2: Warning: the function ‘bar-define-key’ is not known to be defined.
bar.el:3:2: Warning: the function ‘foo-define-definer’ is not known to be
defined.
#+end_example
* Additional notes
+ If ~emacs-lisp-byte-compile-and-load~ is called before
~emacs-lisp-native-compile-and-load~, the native compilation succeeds
without errors or warnings, and the macro and function are defined.
--
Thanks,
Adam
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling,
Adam Porter <=