comparison lisp/cl-macs.el @ 5525:2a6a8da4dd7c

Fix a bug in my last commit, symbol macros that expand to themselves hang. 2011-06-19 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-defsubst-expand): It is occasionally the case that the symbol naming the argument co-incides with the value that it is replacing; in that case, using the symbol macro is counterproductive and hangs XEmacs (as does analogous code in SBCL), so don't.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 19 Jun 2011 19:47:13 +0100
parents 810b77562486
children b908c7265a2b
comparison
equal deleted inserted replaced
5524:e05d98bf9644 5525:2a6a8da4dd7c
3221 (if (cl-simple-exprs-p argvs) 3221 (if (cl-simple-exprs-p argvs)
3222 (setq simple t)) 3222 (setq simple t))
3223 (let* ((symbol-macros nil) 3223 (let* ((symbol-macros nil)
3224 (lets (mapcan #'(lambda (argn argv) 3224 (lets (mapcan #'(lambda (argn argv)
3225 (if (or simple (cl-const-expr-p argv)) 3225 (if (or simple (cl-const-expr-p argv))
3226 (progn (push (list argn argv) symbol-macros) 3226 (progn (or (eq argn argv)
3227 (push (list argn argv)
3228 symbol-macros))
3227 (and unsafe (list (list argn argv)))) 3229 (and unsafe (list (list argn argv))))
3228 (list (list argn argv)))) 3230 (list (list argn argv))))
3229 argns argvs))) 3231 argns argvs)))
3230 `(let ,lets 3232 `(let ,lets
3231 (symbol-macrolet 3233 (symbol-macrolet