mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Evaluate eql specializers
* lisp/emacs-lisp/cl-generic.el (cl-generic-generalizers): Evaluate forms that are eql specializers. Provide backward compatibility with a warning. * test/lisp/emacs-lisp/cl-generic-tests.el: Add a test. * lisp/emacs-lisp/bindat.el (bindat--type): Adhere to the new rule. * lisp/emacs-lisp/edebug.el (edebug--match-&-spec-op): Adhere to the new rule. * lisp/emacs-lisp/map.el (map-into): Adhere to the new rule. * lisp/emacs-lisp/radix-tree.el (map-into): Adhere to the new rule. * lisp/frame.el (cl-generic-define-context-rewriter): Adhere to the new rule. * lisp/gnus/gnus-search.el (gnus-search-transform-expression): Adhere to the new rule. * lisp/image/image-converter.el (image-converter--probe image-converter--convert): Adhere to the new rule. * lisp/mail/smtpmail.el (smtpmail-try-auth-method): Adhere to the new rule. * lisp/progmodes/elisp-mode.el (xref-backend-definitions) (xref-backend-apropos): Adhere to the new rule. * lisp/progmodes/etags.el (xref-backend-identifier-at-point) (xref-backend-identifier-completion-table) (xref-backend-identifier-completion-ignore-case) (xref-backend-definitions)(xref-backend-apropos): Adhere to the new rule. * test/lisp/emacs-lisp/checkdoc-tests.el (checkdoc-cl-defmethod-with-types-ok) (checkdoc-cl-defmethod-qualified-ok) (checkdoc-cl-defmethod-with-extra-qualifier-ok): Adhere to the new rule. * etc/NEWS: Describe the change.
This commit is contained in:
parent
88577aed3a
commit
6535fd1fa9
14 changed files with 77 additions and 51 deletions
|
|
@ -657,33 +657,33 @@ The port (if any) is omitted. IP can be a string, as well."
|
|||
OP can be one of: unpack', (pack VAL), or (length VAL) where VAL
|
||||
is the name of a variable that will hold the value we need to pack.")
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql byte)))
|
||||
(cl-defmethod bindat--type (op (_ (eql 'byte)))
|
||||
(bindat--pcase op
|
||||
('unpack `(bindat--unpack-u8))
|
||||
(`(length . ,_) `(cl-incf bindat-idx 1))
|
||||
(`(pack . ,args) `(bindat--pack-u8 . ,args))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql uint)) n)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'uint)) n)
|
||||
(if (eq n 8) (bindat--type op 'byte)
|
||||
(bindat--pcase op
|
||||
('unpack `(bindat--unpack-uint ,n))
|
||||
(`(length . ,_) `(cl-incf bindat-idx (/ ,n 8)))
|
||||
(`(pack . ,args) `(bindat--pack-uint ,n . ,args)))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql uintr)) n)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'uintr)) n)
|
||||
(if (eq n 8) (bindat--type op 'byte)
|
||||
(bindat--pcase op
|
||||
('unpack `(bindat--unpack-uintr ,n))
|
||||
(`(length . ,_) `(cl-incf bindat-idx (/ ,n 8)))
|
||||
(`(pack . ,args) `(bindat--pack-uintr ,n . ,args)))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql str)) len)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'str)) len)
|
||||
(bindat--pcase op
|
||||
('unpack `(bindat--unpack-str ,len))
|
||||
(`(length . ,_) `(cl-incf bindat-idx ,len))
|
||||
(`(pack . ,args) `(bindat--pack-str ,len . ,args))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql strz)) &optional len)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'strz)) &optional len)
|
||||
(bindat--pcase op
|
||||
('unpack `(bindat--unpack-strz ,len))
|
||||
(`(length ,val)
|
||||
|
|
@ -701,25 +701,25 @@ is the name of a variable that will hold the value we need to pack.")
|
|||
(bindat--pack-str ,len . ,args)
|
||||
(bindat--pack-strz . ,args))))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql bits)) len)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'bits)) len)
|
||||
(bindat--pcase op
|
||||
('unpack `(bindat--unpack-bits ,len))
|
||||
(`(length . ,_) `(cl-incf bindat-idx ,len))
|
||||
(`(pack . ,args) `(bindat--pack-bits ,len . ,args))))
|
||||
|
||||
(cl-defmethod bindat--type (_op (_ (eql fill)) len)
|
||||
(cl-defmethod bindat--type (_op (_ (eql 'fill)) len)
|
||||
`(progn (cl-incf bindat-idx ,len) nil))
|
||||
|
||||
(cl-defmethod bindat--type (_op (_ (eql align)) len)
|
||||
(cl-defmethod bindat--type (_op (_ (eql 'align)) len)
|
||||
`(progn (cl-callf bindat--align bindat-idx ,len) nil))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql type)) exp)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'type)) exp)
|
||||
(bindat--pcase op
|
||||
('unpack `(funcall (bindat--type-ue ,exp)))
|
||||
(`(length . ,args) `(funcall (bindat--type-le ,exp) . ,args))
|
||||
(`(pack . ,args) `(funcall (bindat--type-pe ,exp) . ,args))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql vec)) count &rest type)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'vec)) count &rest type)
|
||||
(unless type (setq type '(byte)))
|
||||
(let ((fun (macroexpand-all (bindat--fun type) macroexpand-all-environment)))
|
||||
(bindat--pcase op
|
||||
|
|
@ -743,10 +743,10 @@ is the name of a variable that will hold the value we need to pack.")
|
|||
`(dotimes (bindat--i ,count)
|
||||
(funcall ,fun (elt ,val bindat--i)))))))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql unit)) val)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'unit)) val)
|
||||
(pcase op ('unpack val) (_ nil)))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql struct)) &rest args)
|
||||
(cl-defmethod bindat--type (op (_ (eql 'struct)) &rest args)
|
||||
(apply #'bindat--type op args))
|
||||
|
||||
(cl-defmethod bindat--type (op (_ (eql :pack-var)) var &rest fields)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue