[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Metaclass bug in Rainy Day PCL ?



  There is a bug in the handling of specializers
having user-defined metatypes in Rainy Day PCL.
The following patch, which is part of a group of
patches that I sent to the commonloops list on
March 7, will improve things.  Your example works
correctly in my copy of Rainy Day PCL, which contains
all the patches I sent to the list on March 7 and 9.

  Richard Harris

====================
Problem: raise-metatype should return T only when the specializer is T.
         raise-metatype does not recognize specializers having non-standard
         metaclasses.
cache.lisp
raise-metatype
Change:
                         (class-of (class-of (eql-specializer-object x)))
                         (class-of x))))
               (cond ((eq x *the-class-t*) t)
!                    ((eq meta-specializer standard)  'standard-instance)
!                    ((eq meta-specializer fsc)       'standard-instance)
! ;                  ((eq meta-specializer structure) 'structure-instance)
!                    ((eq meta-specializer built-in)  'built-in-instance)
!                    (t 't)))))
To:
                         (class-of (class-of (eql-specializer-object x)))
                         (class-of x))))
               (cond ((eq x *the-class-t*) t)
!                    ((*subtypep meta-specializer standard)  'standard-instance)
!                    ((*subtypep meta-specializer fsc)       'standard-instance)
! ;                  ((*subtypep meta-specializer structure) 'structure-instance)
!                    ((*subtypep meta-specializer built-in)  'built-in-instance)
!                    (t (error "PCL can not handle the specializer ~S~
!  (meta-specializer ~S)" new-specializer meta-specializer))))))
====================