chiark / gitweb /
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: Improve handling of declarations in macros.
Teach `parse-body' to be able to parse only declarations or only
documentation. Use this in macros with convoluted internal binding
structure.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: More exports, found while documenting things.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
debian/rules: Don't strip the main executable.
It doesn't work. All the good stuff in the dumped image gets stripped
out and you're left with a bare SBCL which probably doesn't even work.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Add build machinery for the manual.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Merge branch 'master' into doc
* master:
src/parser/parser-expr-impl.lisp: Compare paren tags with `eql'.
src/module-impl.lisp: Expose `c-fragment' state.
src/lexer-proto.lisp: Export some more symbols.
src/pset-proto.lisp (default-slot-from-property): Make `slot-names' optional.
src/pset-proto.lisp: Fix export of `check-unused-properties'.
src/: Fix some docstrings.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/parser-expr-impl.lisp: Compare paren tags with `eql'.
They're often characters, which can't reliably be compared with `eq'.
Not sure what I was thinking, really.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/module-impl.lisp: Expose `c-fragment' state.
* Export `c-fragment-text', and use `file-location' to read the
location.
* But make these be read-only.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/lexer-proto.lisp: Export some more symbols.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/pset-proto.lisp (default-slot-from-property): Make `slot-names' optional.
To match `default-slot'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/pset-proto.lisp: Fix export of `check-unused-properties'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: Fix some docstrings.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/SYMBOLS: More fixes to file exports.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/: Add more synopses.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Collect symbols from frontend.lisp.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/misc.tex: Track movement of locatives.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Merge branch 'master' into doc
* master:
src/utilities.lisp, src/optparse.lisp: Move locatives to `utilities'.
src/c-types-proto.lisp: Fix docstring.
src/parser/parser-proto.lisp: Export `combine-parser-failures'.
src/utilities.lisp: Move `define-on-demand-slot' to the right section.
src/codegen-impl.lisp: Rename some `inst' slots.
src/codegen-{proto,impl}.lisp: Make *temporary-index* be a module var.
src/class-make-proto.lisp: Choose Lisp metaclass more cleverly.
src/class-make-impl.lisp: Abstract out the guts of `guess-metaclass'.
src/c-types-impl.lisp: Fix arg list in `c-function-type' instance init.
src/lexer-bits.lisp: Delete crufty old file.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/SYMBOLS: Actually check this in, so we can see how it changes.
So stop ignoring it.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Also scan `optparse.lisp'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/utilities.lisp, src/optparse.lisp: Move locatives to `utilities'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/c-types-proto.lisp: Fix docstring.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/parser-proto.lisp: Export `combine-parser-failures'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/utilities.lisp: Move `define-on-demand-slot' to the right section.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/codegen-impl.lisp: Rename some `inst' slots.
Mostly to make them shorter.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/codegen-{proto,impl}.lisp: Make *temporary-index* be a module var.
This arranges for it to be reset properly.
Also, move it into `impl', because users shouldn't mess with it.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/class-make-proto.lisp: Choose Lisp metaclass more cleverly.
Use the same algorithm as is used to choose the runtime metaclass:
if a property names a class explicitly then use that; otherwise, choose
the most specific metaclass of any of the direct superclasses. If there
are no proper superclasses then default to `sod-class' because that's
what `builtin' needs.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/class-make-impl.lisp: Abstract out the guts of `guess-metaclass'.
It's mostly trying to pick out a maximum value from a partially ordered
set. This is a useful primitive, so factor it out.
This also exposes a hack in the previous `guess-metaclass'
implementation. It would, somewhat sneakily, manage to return nil if
given an empty superclass list, which is ideal for the builtin module,
which hasn't built the metaclass yet and must fill it in later. Leave
this hack in, but make it more explicit.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/c-types-impl.lisp: Fix arg list in `c-function-type' instance init.
Previously, `make-function-type' was responsible for spotting `(void)'
argument lists and converting them into empty lists, so if you used
`make-instance' directly you could sneak an actual `(void)' argument
list int. Now the instance initialization machinery for the
`c-function-type' class does this itself, so the gap is closed.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/lexer-bits.lisp: Delete crufty old file.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/: Actually write documentation.
Mostly this is importing synopses which need to have stuff written
about them and around them. But it's all progress, right?
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/structures.tex: Present the concrete structures in `describe'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/syntax.tex: Put the `arbitrary code execution' warning in a box.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.sty: Fiddle with the `describe' categories.
Include a bunch of new ones and change the display names of a few
existing ones.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.sty: Overhaul `describe' environment.
* Split out the machinery which parses and sets the heading to make a
new environment `describe*' which can have multiple headings.
* Remove the `tabular' layer in the headings, by using `\rlap'
instead.
* Fix spacing around the header lines.
* Insert penalties and drive the `\if@nobreak' and `\@afterheading'
machinery correctly so that we mostly don't get bad page breaks.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.sty: Fix footer comment.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.sty: Make `boxy' environment handle footnotes properly.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.sty: Add macro for table column heads.
Somewhat unpleasant.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.tex: Rearrange some of the file-to-chapter assignments.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.tex: Front matter begins at the beginning.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.tex: Print a proper title page.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/runtime.tex: Decide that C `describe' synopses include a trailing `;'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/clang.tex: Fix labels and references.
Mark Wooding [Thu, 17 Sep 2015 17:25:16 +0000 (18:25 +0100)]
doc/{runtime,structures}.tex: Mostly translated from the manpages.
Mark Wooding [Thu, 17 Sep 2015 17:24:55 +0000 (18:24 +0100)]
Merge branch 'master' into doc
* master:
lib/sod-structs.3: Some clarifications and typesetting fixes.
src/parser/scanner-charbuf.impl (charbuf-scanner-map): Return CONSUMEDP.
src/parser/scanner-charbuf-impl.lisp: Simplify `stream-read-line'.
src/parser/scanner-charbuf-impl.lisp: Use `replace' rather than a loop.
src/parser/scanner-impl.lisp: More exports for `list-scanner'.
src/parser/scanner-impl.lisp: Make streams from string scanners.
final.lisp: Move definition of *sod-version* here.
src/frontend.lisp: Use gensyms to name symbols consistently.
Mark Wooding [Thu, 17 Sep 2015 17:24:26 +0000 (18:24 +0100)]
lib/sod-structs.3: Some clarifications and typesetting fixes.
Mark Wooding [Thu, 17 Sep 2015 17:23:43 +0000 (18:23 +0100)]
doc/sod.tex: Describe the data structures after the runtime library.
This goes against my usual grain, but in this case I don't think it
works the other way round because the types are so complicated.
Mark Wooding [Thu, 17 Sep 2015 17:22:24 +0000 (18:22 +0100)]
doc/sod.sty: Make `@->' typeset a dereferencing arrow.
Mark Wooding [Thu, 17 Sep 2015 17:21:05 +0000 (18:21 +0100)]
doc/sod.sty: Hack underscores in the labels generated by `describe'.
Turn them into `-' because otherwise everything goes wrong.
Mark Wooding [Thu, 17 Sep 2015 17:20:17 +0000 (18:20 +0100)]
Kill uninteresting TeX debris.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/scanner-charbuf.impl (charbuf-scanner-map): Return CONSUMEDP.
The docstring says that the function implements the parser protocol, but
it misses an important part of it out. Fix this omission.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/scanner-charbuf-impl.lisp: Simplify `stream-read-line'.
We do more or less the same stuff at the end regardless of how we got
there, so factor it out.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/scanner-charbuf-impl.lisp: Use `replace' rather than a loop.
Somehow I failed to notice `replace' being a completely cromulent
`memcpy' thing for Lisp.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/scanner-impl.lisp: More exports for `list-scanner'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/scanner-impl.lisp: Make streams from string scanners.
Implement `make-scanner-stream' for `string-scanner'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
final.lisp: Move definition of *sod-version* here.
Seems more at home somehow.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/frontend.lisp: Use gensyms to name symbols consistently.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/: Sort out the manual structure. Write stuff.
Don't expect great commit messages for a while.
Mark Wooding [Mon, 14 Sep 2015 21:34:48 +0000 (22:34 +0100)]
Merge branch 'master' into doc
* master: (93 commits)
Eliminate the separately maintained Lisp system version number.
src/{builtin,final,frontent}.lisp: `clear-the-decks' makes builtin module.
src/class-{finalize,layout}-impl.lisp: Error checking on layout slots.
src/class-finalize-impl.lisp: Remove FIXME which was fixed ages ago.
src/: Introduce a macro for defining on-demand slots.
Major effort to plug slot-name leaks.
doc/list-exports.lisp: Report on generic function methods.
doc/list-exports.lisp: Strip duplicate exports.
doc/list-exports.lisp: Better pretty formatting for keywords.
doc/list-exports.lisp: Mark the start of the class tree dump.
src/codegen-proto.lisp, doc/list-exports.lisp: Export `inst' readers.
src/: More missing exports.
doc/list-exports.lisp: Sort sibling classes by name in the tree.
doc/list-exports.lisp: Search for exports inside `eval-when' blocks.
doc/list-exports.lisp: Don't get confused and thing `nil' isn't interned.
doc/list-exports.lisp: Check for anomalies when preparing reports.
doc/list-exports.lisp: Some sketchy code to report on exported symbols.
src/: Fix up some wrong exports.
src/final.lisp, src/frontend.lisp: Compile methods before dumping.
src/frontend.lisp: Prepare the builtin module at load time.
...
Mark Wooding [Mon, 14 Sep 2015 17:10:06 +0000 (18:10 +0100)]
Eliminate the separately maintained Lisp system version number.
* Have `configure.ac' derive a version string which ASDF won't choke
on and make that available as an output variable.
* Move the ASD files to `.in' files, and substitute the source path
into them at build time, so that they actually still work.
* At build time, construct an `auto.lisp' file with the relevant version
information; modify the ASD `.in' files to load this.
* At install time, construct the ASD files differently, by stripping
out the source path and substituting the version information bodily
into the files.
* Actually install the `sod-frontend' system definition, just in case
it's useful to someone.
* Actually remove the ASDF symlinks when we're finished.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/{builtin,final,frontent}.lisp: `clear-the-decks' makes builtin module.
Add a `clear-the-decks' function which will make the builtin module if
it's not been set up yet. Now we don't need to do this explicitly and
everything is better.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/class-{finalize,layout}-impl.lisp: Error checking on layout slots.
The layout slots which are autovivifying (`effective-methods',
`%ilayout', and `vtables') shouldn't be accessed prior to class
finalization, so gather their definitions together and check that this
is done properly.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/class-finalize-impl.lisp: Remove FIXME which was fixed ages ago.
The slots which were marked for autovivifying in fact have been for five
years. We can delete setting them explicitly without great loss.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: Introduce a macro for defining on-demand slots.
This is a surprisingly major win.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Major effort to plug slot-name leaks.
Arrange that all slot names, for structures and CLOS objects, are
internal symbols of the relevant package.
There used to be a number of bad words in slot names, including `class',
`method', `expr', `type', and `condition'. All of these have gone.
I've used two main approaches.
* Renaming the slots with a leading `%'. For structures, this
involves hacking the constructor function to initialize the slot
from a dummy argument with a less unpleasant name, and setting up
trivial reader and writer function wrappers, so there's a new macro
`define-access-wrapper' in utilities.lisp to do this. For CLOS
objects, the accessor functions are named explicitly so that's not
a problem, but there's a lot of work needed to track down direct
slot accesses through `slot-value' and `with-slots'.
* For classes defined through `definst', I've instead named the slots
with gensyms (at read time), because their names are used as part of
automagically defined methods.
I may not have fixed everything: this is a rather invasive change.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Report on generic function methods.
Show all methods on newly defined generic functions, and all methods
specialized on our own classes.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Strip duplicate exports.
They can happen legitimately because of automatic exporting.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Better pretty formatting for keywords.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Mark the start of the class tree dump.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/codegen-proto.lisp, doc/list-exports.lisp: Export `inst' readers.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: More missing exports.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Sort sibling classes by name in the tree.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Search for exports inside `eval-when' blocks.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Don't get confused and thing `nil' isn't interned.
Check the correct value of `find-symbol', because `nil' is false.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Check for anomalies when preparing reports.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/list-exports.lisp: Some sketchy code to report on exported symbols.
Currently produces a list with category indications, and a class
hierarchy. Useful for preparing documentation.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: Fix up some wrong exports.
Various small bugs:
* Some symbols which should have been exported weren't.
* One export was mispslet.
* One export was duplicated.
* One was a failed attempt to export an instruction, but `definst' can
do that properly now.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/final.lisp, src/frontend.lisp: Compile methods before dumping.
Exercise the method machinery so we don't have to run the compiler as
much after dumping.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/frontend.lisp: Prepare the builtin module at load time.
This is better because load time happens before the image is dumped.
Also, remove some pointless `clear-the-decks' calls.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/final.lisp: Rename from `debug.lisp'.
It's going to get more stuff.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
vars.am, lib/: Add some manual pages for the library.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
lib/sod.h: Arrange that `SOD_XCHAIN' returns `void *'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
lib/sod.h, src/class-output.lisp: Rename `SOD__CAR' to `SOD_CAR'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/class-output.lisp: Make `__CONV_' macros more robust.
If the formal argument name is a simple identifier, then things come
unstuck when there's a chain head with that same nickname. So make the
argument name be something which isn't allowed as a class nickname.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: Stuff vtable structures into a union.
For the same reason that ichains are collected into a union: to force
the compiler's hand into getting the various members to overlap in the
common prefixes.
This doesn't affect day-to-day use, but it does change the types of the
things which are actually exported.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
lib/sod.h: Make the `_vt' member of `sod_instance' be pointer-to-const.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/frontend.lisp: The command-line options aren't crazy any more.
Mark Wooding [Mon, 7 Sep 2015 14:20:11 +0000 (15:20 +0100)]
test/chimaera.sod: Reorder Serpent tickling decision.
It makes more sense to me to have the actions in the order they'll be
experienced.
Mark Wooding [Mon, 7 Sep 2015 14:13:12 +0000 (15:13 +0100)]
test/chimaera.sod: Use the macros for sending messages.
Rather than digging about in `_vt' directly.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Makefile.am, debian/: Initial packaging; release 0.2.0.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Makefile.am: Include a pkgconfig file.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Include `confsubst' machinery.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Makefile.am: Write release number into distribution packages.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Makefile.am: Actually distribute the `auto-version' script.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/Makefile.am: Install `parser' files in the correct place.
We have to use the `nobase_...' variable, which is waaay too long. So
invent our own variable `LISP_SOURCES' and use that instead.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/Makefile.am: Distribute `src/parser/package.lisp'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/Makefile.am, src/test-base.lisp: Check version numbers match.
We have version numbers in two places, and that's no good, but I can't
see a good way of generating the Lisp package version from the Git
version, so I'm just going to add a test that they match.
It's not a perfect test, but it ought to do.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/Makefile.am: Improve test running rule.
Catch errors and print them briefly rather than having a full stack
backtrace.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/test-base.lisp: Actually signal an error if the tests fail.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/parser-test.lisp: Suppress maybe-unused variable warning.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/c-types-parse.lisp: Some better comment formatting.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/c-types-parse.lisp: Handle `...' in prefix-`(' disambiguation.
Now that we've actually got the machinery to parse ellipses in function
argument lists, it'd be nice to do it properly.
(I think -- but I might be wrong -- that the reason this wasn't done
before is that C doesn't let you put `...' as the only thing in an
argument list, because you need to have a named argument to initialize
the `va_list'. But Sod can, and does, because there's always at least a
receiver argument.)