Function: bytecomp--check-memq-args

bytecomp--check-memq-args is a byte-compiled function defined in bytecomp.el.gz.

Signature

(bytecomp--check-memq-args FORM &optional ELEM LIST &rest IGNORE)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/bytecomp.el.gz
(defun bytecomp--check-memq-args (form &optional elem list &rest _ignore)
  (let* ((fn (car form))
         (number-ok (eq fn 'memql)))
    (cond
     ((bytecomp--dodgy-eq-arg-p elem number-ok)
      (bytecomp--warn-dodgy-eq-arg
       form (bytecomp--arg-type-description elem) "arg 1"))
     ((and (consp list) (eq (car list) 'quote)
           (proper-list-p (cadr list)))
      (named-let loop ((elts (cadr list)) (i 1))
        (if elts
            (let* ((elt (car elts))
                   (x (cond ((eq fn 'assq) (car-safe elt))
                            ((eq fn 'rassq) (cdr-safe elt))
                            (t elt))))
              (if (or (symbolp x)
                      (and (integerp x)
                           (or (<= -536870912 x 536870911) number-ok))
                      (and (floatp x) number-ok))
                  (loop (cdr elts) (1+ i))
                (bytecomp--warn-dodgy-eq-arg
                 form (bytecomp--value-type-description x)
                 (format "element %d of arg 2" i))))
          form)))
     (t form))))