Skip to content
  • Boris Smilga's avatar
    Improved handling of declarations. · 8d7e8fa1
    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