diff options
author | Vibhav Pant <vibhavp@gmail.com> | 2017-04-22 20:38:53 +0530 |
---|---|---|
committer | Vibhav Pant <vibhavp@gmail.com> | 2017-04-22 22:08:15 +0530 |
commit | 1c91bc9221d12618c9fb5507561dd35b7e392cb6 (patch) | |
tree | 515cbb3f08814413ef43359d047c5bd9273ea024 /lisp | |
parent | ace38bafa6ae0d40bf3fac9f998c8ecbe36d5f41 (diff) | |
download | emacs-1c91bc9221d12618c9fb5507561dd35b7e392cb6.tar.gz |
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.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 4 |
1 files changed, 2 insertions, 2 deletions
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)))))) |