[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: RLB at MIT-MC
- Subject: defun&
- From: JONL at MIT-MC (Jon L White)
- Date: Sat, 19 Apr 80 17:48:00 GMT
- Cc: (BUG LISP) at MIT-MC
- Original-date: 19 APR 1980 1248-EST
Date: 17 April 1980 12:52-EST
From: Richard L. Bryan <RLB at MIT-MC>
Subject: DEFUN& strikes again!
Macroexpansion of the following code binds SUBRS to (), then does
(DESETQ SUBRS (REVERSE SUBRS)) which is purely wrong. This sounds
suspiciously like one of those infamous "unsafe optimizations".
(declare (special subrs VASL-stream))
(defun ap3 (filename &optional pkg-name module-name
&aux (owho3 (status who3))
(subrs (reverse subrs))
(list subrs filename pkg-name module-name))
Indeed, any case like (DEFUN FOO (&OPT (BAR BAR)) ...) is not
correctly handled - only if a variable is being being bound to
*previous* variables in the varlist does it work right. This
could be fixed, without loss of other optimizations, if anyone
is really interested.