Ikumi Keita writes: > Hi Andreas, thanks for your reply. > >>>>>> Andreas Schwab writes: >> On Jun 05 2018, Ikumi Keita wrote: >>> (defun xyz (arg) >>> "dummy" >>> ; (cond ((eq arg nil) ; OK >>> ; (cond ((eq arg 'abc) ; OK >>> ; (cond ((eq arg 'def) ; OK >>> (cond ((eq arg 'default) ; NG > >> The byte-compiler uses 'default as a magic symbol, which breaks this >> case. > > Does this mean that this behavior is a (new) designed feature of elisp > and not a bug? > If so, is it the respoisibility of the authors of the codes to rewrite > not to use `default' or else to make sure to set > `byte-compile-cond-use-jump-table' to nil at byte compile? I for one consider this a bug, for 2 reasons: 1) It's not reasonable to expect a Lisp programmer to just know that using the symbol default is problematic. 2) It creates diverging behavior between compiled and non-compiled Lisp. To that end, I've made a small patch to rectify the behavior. Instead of hardcoding a symbol, it uses gensym to create a unique one. I did a full build of Emacs, as well as ran 'make check' and had identical results pre- and post-change, so I'm reasonably sure it's correct. Comments and corrections are of course welcomed. HTH, -- ~Robert Cochran GPG Fingerprint - BD0C 5F8B 381C 64F0 F3CE E7B9 EC9A 872C 41B2 77C2 -----