Function: byte-optimize-if

byte-optimize-if is a byte-compiled function defined in byte-opt.el.gz.

Signature

(byte-optimize-if FORM)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/byte-opt.el.gz
(defun byte-optimize-if (form)
  (let ((condition (nth 1 form))
        (then (nth 2 form))
        (else (nthcdr 3 form)))
    (cond
     ;; (if (progn ... X) ...) -> (progn ... (if X ...))
     ((eq (car-safe condition) 'progn)
      (nconc (butlast condition)
             (list
              (byte-optimize-if
               `(,(car form) ,(car (last condition)) ,@(nthcdr 2 form))))))
     ;; (if TRUE THEN ...) -> (progn TRUE THEN)
     ((byte-compile-trueconstp condition)
      `(progn ,condition ,then))
     ;; (if FALSE THEN ELSE...) -> (progn FALSE ELSE...)
     ((byte-compile-nilconstp condition)
      (if else
          `(progn ,condition ,@else)
        condition))
     ;; (if X t) -> (not (not X))
     ((and (eq then t) (null else))
      `(not ,(byte-opt--negate condition)))
     ;; (if VAR VAR X...) -> (or VAR (progn X...))
     ((and (symbolp condition) (eq condition then))
      `(or ,then ,(if (cdr else)
                      `(progn . ,else)
                    (car else))))
     ;; (if X THEN nil) -> (if X THEN)
     (then
      (if (equal else '(nil))
	  (list (car form) condition then)
	form))
     ;; (if X nil ELSE...) -> (if (not X) (progn ELSE...))
     ((or (car else) (cdr else))
      (list (car form) (byte-opt--negate condition)
	    (if (cdr else)
		`(progn . ,else)
	      (car else))))
     ;; (if X nil nil) -> (progn X nil)
     (t
      (list 'progn condition nil)))))