projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.21.2:
[sbcl.git]
/
src
/
pcl
/
slots.lisp
diff --git
a/src/pcl/slots.lisp
b/src/pcl/slots.lisp
index
7cae742
..
24de706
100644
(file)
--- a/
src/pcl/slots.lisp
+++ b/
src/pcl/slots.lisp
@@
-331,9
+331,13
@@
(cons
(car position))))))
\f
(cons
(car position))))))
\f
+;;; FIXME: AMOP says that allocate-instance imples finalize-inheritance
+;;; if the class is not yet finalized, but we don't seem to be taking
+;;; care of this for non-standard-classes.x
(defmethod allocate-instance ((class standard-class) &rest initargs)
(declare (ignore initargs))
(defmethod allocate-instance ((class standard-class) &rest initargs)
(declare (ignore initargs))
- (unless (class-finalized-p class) (finalize-inheritance class))
+ (unless (class-finalized-p class)
+ (finalize-inheritance class))
(allocate-standard-instance (class-wrapper class)))
(defmethod allocate-instance ((class structure-class) &rest initargs)
(allocate-standard-instance (class-wrapper class)))
(defmethod allocate-instance ((class structure-class) &rest initargs)
@@
-341,8
+345,14
@@
(let ((constructor (class-defstruct-constructor class)))
(if constructor
(funcall constructor)
(let ((constructor (class-defstruct-constructor class)))
(if constructor
(funcall constructor)
- (error "can't allocate an instance of class ~S" (class-name class)))))
+ (allocate-standard-instance (class-wrapper class)))))
+;;; FIXME: It would be nicer to have allocate-instance return
+;;; uninitialized objects for conditions as well.
(defmethod allocate-instance ((class condition-class) &rest initargs)
(declare (ignore initargs))
(make-condition (class-name class)))
(defmethod allocate-instance ((class condition-class) &rest initargs)
(declare (ignore initargs))
(make-condition (class-name class)))
+
+(defmethod allocate-instance ((class built-in-class) &rest initargs)
+ (declare (ignore initargs))
+ (error "Cannot allocate an instance of ~S." class)) ; So sayeth AMOP