mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-07 15:00:34 -08:00
* lisp/emacs-lisp/bindat.el (bindat-spec): New macro.
It's basically an alias for `quote`, but it offers the advantage of providing Edebug support and opens the possibility of compiling the bindat spec to ELisp code. * doc/lispref/processes.texi (Bindat Spec): Document `bindat-spec`. (Bindat Functions): Tweak a few things to adjust to the state of the code. * test/lisp/emacs-lisp/bindat-tests.el: Use it. * test/lisp/emacs-lisp/edebug-tests.el (edebug-tests--read): New function. (edebug-tests--&rest-behavior): New test.
This commit is contained in:
parent
2106b12fa7
commit
83d9fbe3bb
5 changed files with 91 additions and 24 deletions
|
|
@ -24,13 +24,15 @@
|
|||
(require 'cl-lib)
|
||||
|
||||
(defvar header-bindat-spec
|
||||
'((dest-ip ip)
|
||||
(bindat-spec
|
||||
(dest-ip ip)
|
||||
(src-ip ip)
|
||||
(dest-port u16)
|
||||
(src-port u16)))
|
||||
|
||||
(defvar data-bindat-spec
|
||||
'((type u8)
|
||||
(bindat-spec
|
||||
(type u8)
|
||||
(opcode u8)
|
||||
(length u16r) ;; little endian order
|
||||
(id strz 8)
|
||||
|
|
@ -38,7 +40,8 @@
|
|||
(align 4)))
|
||||
|
||||
(defvar packet-bindat-spec
|
||||
'((header struct header-bindat-spec)
|
||||
(bindat-spec
|
||||
(header struct header-bindat-spec)
|
||||
(items u8)
|
||||
(fill 3)
|
||||
(item repeat (items)
|
||||
|
|
|
|||
|
|
@ -970,6 +970,23 @@ primary ones (Bug#42671)."
|
|||
(eval '(setf (edebug-test-code-use-gv-expander (cons 'a 'b)) 3) t))
|
||||
"(func"))))
|
||||
|
||||
(defun edebug-tests--read (form spec)
|
||||
(with-temp-buffer
|
||||
(print form (current-buffer))
|
||||
(goto-char (point-min))
|
||||
(cl-letf ((edebug-all-forms t)
|
||||
((get (car form) 'edebug-form-spec) spec))
|
||||
(edebug--read nil (current-buffer)))))
|
||||
|
||||
(ert-deftest edebug-tests--&rest-behavior ()
|
||||
;; `&rest' is documented to allow the last "repetition" to be aborted early.
|
||||
(should (edebug-tests--read '(dummy x 1 y 2 z)
|
||||
'(&rest symbolp integerp)))
|
||||
;; `&rest' should notice here that the "symbolp integerp" sequence
|
||||
;; is not respected.
|
||||
(should-error (edebug-tests--read '(dummy x 1 2 y)
|
||||
'(&rest symbolp integerp))))
|
||||
|
||||
(ert-deftest edebug-tests-cl-flet ()
|
||||
"Check that Edebug can instrument `cl-flet' forms without name
|
||||
clashes (Bug#41853)."
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue