Fix debug spec of cl-flet (bug#65344)
* lisp/emacs-lisp/cl-macs.el (cl-flet): Fix debug spec. (cl-defun): Allow only symbols as function names in debug spec. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-flet/edebug): New test case.
This commit is contained in:
parent
c74a99dcd1
commit
18c85306ac
2 changed files with 23 additions and 4 deletions
|
@ -389,7 +389,7 @@ more details.
|
|||
\(fn NAME ARGLIST [DOCSTRING] BODY...)"
|
||||
(declare (debug
|
||||
;; Same as defun but use cl-lambda-list.
|
||||
(&define [&name sexp] ;Allow (setf ...) additionally to symbols.
|
||||
(&define [&name symbolp]
|
||||
cl-lambda-list
|
||||
cl-declarations-or-string
|
||||
[&optional ("interactive" interactive)]
|
||||
|
@ -2075,13 +2075,15 @@ info node `(cl) Function Bindings' for details.
|
|||
|
||||
\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
|
||||
(declare (indent 1)
|
||||
(debug ((&rest [&or (symbolp form)
|
||||
(&define [&name symbolp "@cl-flet@"]
|
||||
(debug ((&rest [&or (&define [&name symbolp "@cl-flet@"]
|
||||
[&name [] gensym] ;Make it unique!
|
||||
cl-lambda-list
|
||||
cl-declarations-or-string
|
||||
[&optional ("interactive" interactive)]
|
||||
def-body)])
|
||||
def-body)
|
||||
(&define [&name symbolp "@cl-flet@"]
|
||||
[&name [] gensym] ;Make it unique!
|
||||
def-form)])
|
||||
cl-declarations body)))
|
||||
(let ((binds ()) (newenv macroexpand-all-environment))
|
||||
(dolist (binding bindings)
|
||||
|
|
|
@ -708,6 +708,23 @@ collection clause."
|
|||
(f lex-var)))))
|
||||
(should (equal (f nil) 'a)))))
|
||||
|
||||
(ert-deftest cl-flet/edebug ()
|
||||
"Check that we can instrument `cl-flet' forms (bug#65344)."
|
||||
(with-temp-buffer
|
||||
(print '(cl-flet (;; "Obscure" form of binding supported by cl-flet
|
||||
(x (progn (list 1 2) (lambda ())))
|
||||
;; Destructuring lambda-list
|
||||
(y ((min max)) (list min max))
|
||||
;; Regular binding plus shadowing.
|
||||
(z (a) a)
|
||||
(z (a) a))
|
||||
(y '(1 2)))
|
||||
(current-buffer))
|
||||
(let ((edebug-all-forms t)
|
||||
(edebug-initial-mode 'Go-nonstop))
|
||||
;; Just make sure the forms can be instrumented.
|
||||
(eval-buffer))))
|
||||
|
||||
(ert-deftest cl-macs--progv ()
|
||||
(defvar cl-macs--test)
|
||||
(defvar cl-macs--test1)
|
||||
|
|
Loading…
Add table
Reference in a new issue