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 nil t) -> (not X)
((and (eq then nil) (eq else '(t)))
`(not ,condition))
;; (if X t [nil]) -> (not (not X))
((and (eq then t) (or (null else) (eq else '(nil))))
`(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)))))