From: Vibhav Pant Date: Sat, 22 Apr 2017 15:08:53 +0000 (+0530) Subject: b-c--cond-jump-table-info: Use correct body for singleton clauses X-Git-Tag: emacs-26.0.90~521^2~575 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1c91bc9221d12618c9fb5507561dd35b7e392cb6;p=emacs.git b-c--cond-jump-table-info: Use correct body for singleton clauses * lisp/emacs-lisp/bytecomp.el (byte-compile-cond-jump-table-info): When a clause's body consists of a single constant expression, use that expression as the body to be compiled. This fixes switch bytecode evaluating to nil to such clauses. --- diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index aba07102055..15dc24060aa 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -4066,8 +4066,8 @@ Return a list of the form ((TEST . VAR) ((VALUE BODY) ...))" ;; discard duplicate clauses (not (assq obj2 cases))) (push (list (if (consp obj2) (eval obj2) obj2) body) cases) - (if (eq condition t) - (progn (push (list 'default body) cases) + (if (and (macroexp-const-p condition) condition) + (progn (push (list 'default (or body `(,condition))) cases) (throw 'break t)) (setq ok nil) (throw 'break nil))))))