chiark / gitweb /
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.