[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?
- bug#50738: `ert-deftest` bodies should not use lexical-binding=nil,
Mattias Engdegård <=