-
Boris Smilga authored
1. Named function bodies in Common Lisp may contain multiple DECLARE forms before or after the docstring (or even before *and* after). This feature is important for meta-programming by macros, and so PS should also support it. 2. Declarations should be allowed in PS forms whose Lisp namesakes allow them, to wit: in the macros WITH-SLOTS, MULTIPLE-VALUE-BIND, DO*, DO, DOTIMES, DOLIST, DESTRUCTURING-BIND, LET*, DEFUN, DEFSETF, and in the special forms LET, FLET, LABELS (letting out DEFMACRO, MACROLET, SYMBOL-MACROLET who are not translated to JavaScript). Before the present commit, most of them didn't handle declarations correctly. 3. Individual DECLARE forms should be allowed to contain multiple declaration specifiers, in particular, multiple SPECIAL specifiers. WITH-DECLARATION-EFFECTS used to ignore SPECIALs after the first one. 4. This commit also introduces LOCALLY as PS form because it simplifies the implementation of stuff from (2).
8d7e8fa1