unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#50738: `ert-deftest` bodies should not use lexical-binding=nil
@ 2021-09-22 11:13 Mattias Engdegård
  2021-09-22 14:26 ` Mattias Engdegård
  2021-09-22 20:33 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 5+ messages in thread
From: Mattias Engdegård @ 2021-09-22 11:13 UTC (permalink / raw)
  To: 50738

Contrary to the expectations of everybody, the body of `ert-deftest` is always run with `lexical-binding` bound to nil regardless of what the file uses. This bug keeps causing trouble and it's high time we did something about it.

The technical reason for this snag is that the body is evaluated inside a `with-temp-buffer` clause (see `ert--run-test-internal`). Some options, ordered in roughly decreasing order of desirability (subjective):

1. Make with-temp-buffer use the current value of lexical-binding for the temporary buffer, instead of always using nil.
2. Make ert-deftest bodies use lexical-binding=t.
3. Make ert-deftest bodies use the file value of lexical-binding.

Although the last option looks sensible at first glance it's a bit messy in practice because of how ERT works (the value of lexical-binding needs to be threaded through various data structures) and shouldn't we migrate to lexical-binding anyway?







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

end of thread, other threads:[~2021-09-25 18:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-22 11:13 bug#50738: `ert-deftest` bodies should not use lexical-binding=nil Mattias Engdegård
2021-09-22 14:26 ` Mattias Engdegård
2021-09-22 20:33 ` Lars Ingebrigtsen
2021-09-23  5:50   ` Eli Zaretskii
2021-09-25 18:33     ` Mattias Engdegård

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).