parse-body: Allow docstring to be mixed in among the declarations.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 29 Apr 2006 17:09:49 +0000 (18:09 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 30 Apr 2006 12:29:45 +0000 (13:29 +0100)
commite2a3c9236277551b174d522db7161c4eec29f97f
tree6da2294046a89fdec8b49a40f4e2a2658c414427
parente96e008d5962bdbf73e16350a3880983857e87a4
parse-body: Allow docstring to be mixed in among the declarations.

Ooops.  I've just re-read CLtL, and found that the top of most forms
allows the docstring to be mixed in among the declarations in any old
order, rather than docstring-first, declarations-after.  And I've also
just read Hyperspec 3.4.11, which explains that a final string isn't a
docstring, so handle that correctly too.

So rewrite the code to handle this case.  It means that macros will
probably reorder the forms in their output, but that's all right.

While we're here, glue all the declarations into a single `declare'
form, which makes it easier to put the declarations into some other kind
of form such as `declaim'.  And provide a keyword argument
:allow-docstring-p (defaulting true) to disallow docstrings.
mdw-base.lisp