Use AMOP representation of canonicalized default initargs for conditions
authorJan Moringen <jmoringe@techfak.uni-bielefeld.de>
Fri, 5 Apr 2013 10:31:06 +0000 (12:31 +0200)
committerChristophe Rhodes <csr21@cantab.net>
Fri, 12 Apr 2013 18:10:12 +0000 (19:10 +0100)
commit9bdd2579f980573a74daabe03120ed64b1733b11
tree0eebe66e3acd8bf6db1bf4db27027a65fecfbd81
parent91a071d43c4fdca0ad2fb6ad488453fa1bcc9ed1
Use AMOP representation of canonicalized default initargs for conditions

This fixes two issues:

1. CLASS-DIRECT-DEFAULT-INITARGS did not work for condition
   classes (bug 1164970)

2. Constant functions as default initargs of condition classes did not
   work correctly (bug 539517)

The following things have been changed:

* CONDITION-CLASSOID-DEFAULT-INITARGS is now called
  CONDITION-CLASSOID-DIRECT-DEFAULT-INITARGS to better reflect its
  purpose.

* Previously, default initargs of condition classes where stored in a
  plist the values of which where constant initforms or
  initfunctions. Now default initargs of condition classes are always
  of the form

    (INITARG INITFORM THUNK)

  as described in AMOP.

* The SHARED-INITIALIZED :AFTER CONDITION-CLASS T method now stores
  the direct default initargs in the class plist. These are now of the
  correct form as described in the previous bullet point.

* The DOPLIST macro used to be defined in src/pcl/macros.lisp. It is
  now in src/code/early-extensions.lisp and exported from SB-INT. This
  was necessary to use DOPLIST in src/code/condition.lisp.

* Unit test for both problems have been added.

fixes lp#539517, fixes lp#1164970
NEWS
package-data-list.lisp-expr
src/code/condition.lisp
src/code/early-extensions.lisp
src/pcl/macros.lisp
src/pcl/std-class.lisp
tests/condition.impure.lisp