unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling
@ 2021-09-13 13:41 Adam Porter
  2022-08-25 15:16 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 4+ messages in thread
From: Adam Porter @ 2021-09-13 13:41 UTC (permalink / raw)
  To: 50569

#+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





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling
  2021-09-13 13:41 bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling Adam Porter
@ 2022-08-25 15:16 ` Lars Ingebrigtsen
  2022-08-25 22:05   ` Adam Porter
  0 siblings, 1 reply; 4+ messages in thread
From: Lars Ingebrigtsen @ 2022-08-25 15:16 UTC (permalink / raw)
  To: Adam Porter; +Cc: 50569

Adam Porter <adam@alphapapa.net> writes:

> *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*=:

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

I'm unable to reproduce this problem in Emacs 29 -- do you still see
this problem with the current master?





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling
  2022-08-25 15:16 ` Lars Ingebrigtsen
@ 2022-08-25 22:05   ` Adam Porter
  2022-08-26 10:59     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 4+ messages in thread
From: Adam Porter @ 2022-08-25 22:05 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 50569

Hi Lars,

Thanks for following up on this.

On 8/25/22 10:16, Lars Ingebrigtsen wrote:
> Adam Porter <adam@alphapapa.net> writes:
> 
>> *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*=:
> 
> (I'm going through old bug reports that unfortunately weren't 
> resolved at the time.)
> 
> I'm unable to reproduce this problem in Emacs 29 -- do you still see 
> this problem with the current master?

I'm afraid I don't have time to test that myself right now.  If you were
unable to reproduce it with the recipe I provided, I'd guess that it's
been solved in version 29.

If it's possible to backport a fix to version 28, that would be
good, because if that version ends up being included in various
distributions and used for years, it would mean that Emacs packages
could have to workaround this problem for years as well.  (Or, of
course, they could declare Emacs 29 as the minimum required version,
which will lead users on version 28 to complain...you know the drill.)





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling
  2022-08-25 22:05   ` Adam Porter
@ 2022-08-26 10:59     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 4+ messages in thread
From: Lars Ingebrigtsen @ 2022-08-26 10:59 UTC (permalink / raw)
  To: Adam Porter; +Cc: 50569

Adam Porter <adam@alphapapa.net> writes:

> I'm afraid I don't have time to test that myself right now.  If you were
> unable to reproduce it with the recipe I provided, I'd guess that it's
> been solved in version 29.
>
> If it's possible to backport a fix to version 28, that would be
> good,

I can't reproduce it in Emacs 28, either, so I guess this was fixed
before the release.

So I'm closing this bug report, but if you see still see this (perhaps
there's something missing in the recipe or something), please respond to
the debbugs address and we'll reopen.





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-08-26 10:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-13 13:41 bug#50569: 28.0.50; [native-comp] emacs-lisp-native-compile-and-load does not load require'd files before compiling Adam Porter
2022-08-25 15:16 ` Lars Ingebrigtsen
2022-08-25 22:05   ` Adam Porter
2022-08-26 10:59     ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).