summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/edebug.el
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2023-02-11 10:45:31 +0000
committerAlan Mackenzie <acm@muc.de>2023-02-11 10:45:31 +0000
commitdc3604cadfa8f4bc3e5d9346029e48b4268fcd60 (patch)
tree7695f40301539cb9b32c2422d7859410dec1c2d8 /lisp/emacs-lisp/edebug.el
parentdbe7803aa1e8249bd70f67f25f19aedabeb9cc22 (diff)
downloademacs-dc3604cadfa8f4bc3e5d9346029e48b4268fcd60.tar.gz
emacs-dc3604cadfa8f4bc3e5d9346029e48b4268fcd60.tar.bz2
emacs-dc3604cadfa8f4bc3e5d9346029e48b4268fcd60.zip
Make edebug see unused variables when lexical-binding is non-nil
This fixes bug #59213. * lisp/emacs-lisp/cconv.el (cconv-dont-trim-unused-variables): New variable. (cconv-fv, cconv-make-interpreted-closure): Add/amend doc strings. (cconv-make-interpreted-closure): Test cconv-dont-trim-unused-variables, and if non-nil, don't "optimize" the lexical environment. * lisp/emacs-lisp/edebug.el (edebug-make-enter-wrapper): Compile a binding of cconv-dont-trim-unused-variables to t around the call of edebug-enter. * lisp/emacs-lisp/testconver.el (testcover-analyze-coverage): Add a new arm to the pcase form to handle the new form of edebug-enter.
Diffstat (limited to 'lisp/emacs-lisp/edebug.el')
-rw-r--r--lisp/emacs-lisp/edebug.el20
1 files changed, 10 insertions, 10 deletions
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 2f7d03e9d79..735a358cdba 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -1217,16 +1217,16 @@ purpose by adding an entry to this alist, and setting
(setq edebug-old-def-name nil))
(setq edebug-def-name
(or edebug-def-name edebug-old-def-name (gensym "edebug-anon")))
- `(edebug-enter
- (quote ,edebug-def-name)
- ,(if edebug-inside-func
- `(list
- ;; Doesn't work with more than one def-body!!
- ;; But the list will just be reversed.
- ,@(nreverse edebug-def-args))
- 'nil)
- (function (lambda () ,@forms))
- ))
+ `(let ((cconv-dont-trim-unused-variables t))
+ (edebug-enter
+ (quote ,edebug-def-name)
+ ,(if edebug-inside-func
+ `(list
+ ;; Doesn't work with more than one def-body!!
+ ;; But the list will just be reversed.
+ ,@(nreverse edebug-def-args))
+ 'nil)
+ (function (lambda () ,@forms)))))
(defvar edebug-form-begin-marker) ; the mark for def being instrumented