From: Valtteri V. <vu...@pu...> - 2002-11-22 21:00:15
|
I was attempting to make Loom (an expert system shell) compile under sbcl. I have run into a couple of what appears to be bugs in sbcl 0.7.9: This one is probably the one noted in BUGS. defstruct with :conc-name does not follow the hyperspec regarding creation of overlapping accessors: (defstruct (foo (:conc-name baz-)) kala) (defstruct (bar (:conc-name baz-) (:include foo)) lohi) ; invoking this function breaks because baz-kala now expects ; an argument of type bar (defun struct-lose () (let ((f (make-foo :kala 1))) (baz-kala f))) More interesting is this: (defclass CLOS-INSTANCE () ((loom-concept :allocation :class :accessor loom-concept :reader intrinsic-concept) (previous-instance :allocation :class :initform nil :reader previous-instance) (identifier :allocation :class :initform nil :reader identifier) (time-map :allocation :class :initform nil :reader time-map))) (defclass INSTANCE-IN-CONCEPT-EXTENSION (CLOS-INSTANCE) ()) Loading this code dies in SB-PCL::MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION by falling off an etypecase while doing the latter defclass. My knowledge of CLOS isn't sufficient to say whether this code is doing something wrong, of course. -v |
From: Valtteri V. <vu...@pu...> - 2002-11-22 21:09:24
|
Valtteri Vuorikoski <vu...@pu...> writes: > This one is probably the one noted in BUGS. defstruct with :conc-name Number 127, that is. -v |
From: Christophe R. <cs...@ca...> - 2002-11-23 14:22:21
|
On Fri, Nov 22, 2002 at 10:59:49PM +0200, Valtteri Vuorikoski wrote: > (defclass CLOS-INSTANCE () > ((loom-concept :allocation :class > :accessor loom-concept > :reader intrinsic-concept) > (previous-instance :allocation :class :initform nil :reader previous-instance) > (identifier :allocation :class :initform nil :reader identifier) > (time-map :allocation :class :initform nil :reader time-map))) > > (defclass INSTANCE-IN-CONCEPT-EXTENSION (CLOS-INSTANCE) > ()) > > Loading this code dies in SB-PCL::MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION > by falling off an etypecase while doing the latter defclass. My knowledge > of CLOS isn't sufficient to say whether this code is doing something wrong, > of course. I can't get this code to fail in current CVS sbcl; I suspect that it is related to the SLOT-DEFINITION-ALLOCATION breakage (SLOT-DEFINITION-ALLOCATION used to return the class in which it was allocated; this was used in other places to do stuff to layouts and so on; fixing SLOT-DEFINITION-ALLOCATION to be AMOP compliant broke some bits of code elsewhere in PCL (fixed later with Gerd's new slot read by SLOT-DEFINITION-ALLOCATION-CLASS). Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |