From 9949e17b22f4bbfc8b3a4fec4b9ae2e34099971e Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 7 Oct 2012 13:10:18 +0200 Subject: [PATCH] Fixes in with-early-make-instance --- src/clos/boot.lsp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/clos/boot.lsp b/src/clos/boot.lsp index 8e7a07634..4466bafb1 100644 --- a/src/clos/boot.lsp +++ b/src/clos/boot.lsp @@ -31,16 +31,18 @@ (,object (si::allocate-raw-instance nil %class ,(length slots)))) (declare (type standard-object ,object)) - ,@(loop for (name . slotd) in slots - for initarg = (getf slotd :initarg) - for initform = (getf slotd :initform) - for initvalue = (getf key-value-pairs initarg) - for index from 0 - do (cond ((and initarg (member initarg key-value-pairs)) - (setf initform (getf key-value-pairs initarg))) - ((getf key-value-pairs name) - (setf initform (getf key-value-pairs name)))) - collect `(si::instance-set ,object ,index ,initform)) + ,@(flet ((initializerp (name list) + (not (eq (getf list name 'wrong) 'wrong)))) + (loop for (name . slotd) in slots + for initarg = (getf slotd :initarg) + for initform = (getf slotd :initform) + for initvalue = (getf key-value-pairs initarg) + for index from 0 + do (cond ((and initarg (initializerp initarg key-value-pairs)) + (setf initform (getf key-value-pairs initarg))) + ((initializerp name key-value-pairs) + (setf initform (getf key-value-pairs name)))) + collect `(si::instance-set ,object ,index ,initform))) (when %class (si::instance-sig-set ,object)) (with-early-accessors (,slots)