bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#50738: `ert-deftest` bodies should not use lexical-binding=nil


From: Mattias Engdegård
Subject: bug#50738: `ert-deftest` bodies should not use lexical-binding=nil
Date: Wed, 22 Sep 2021 13:13:58 +0200

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?







reply via email to

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