signal errors for bad initialization of slot definitions
authorChristophe Rhodes <c.rhodes@gold.ac.uk>
Mon, 21 Oct 2013 11:15:04 +0000 (12:15 +0100)
committerChristophe Rhodes <c.rhodes@gold.ac.uk>
Mon, 21 Oct 2013 11:15:04 +0000 (12:15 +0100)
commit885a956ae2044a0c5c4a2b55db8e32b7f6b48d05
tree2e4076326cbf759dd175775ed6b54805c00e46af
parent5193965ff7688f7d748962405343ed666bf616b2
signal errors for bad initialization of slot definitions

In order to get slot definition initialization right, move the
readers/writers slots to direct slot definitions, and write code to
detect all the bad cases documented in the MOP dictionary at
initialization time.  Condition slots also need changing, to have
separate initform and initfunction information.  Moving the slots
breaks metacircle resolution, naturally, so rewrite that to find the
relevant reader/writer information from the direct slots at runtime.
The irony of having to rewrite metacircle detection and resolution for
a bug tagged "easy" on launchpad is not lost on me.

Originally reported by Bruno Haible at some point in prehistory,
probably around December 2004, lp#309072.
NEWS
package-data-list.lisp-expr
src/code/condition.lisp
src/pcl/braid.lisp
src/pcl/defs.lisp
src/pcl/dfun.lisp
src/pcl/early-low.lisp
src/pcl/init.lisp
tests/mop.pure.lisp