[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Metaclass bug in Rainy Day PCL ?
- To: ida@cc.aoyama.ac.jp
- Subject: Re: Metaclass bug in Rainy Day PCL ?
- From: harrisr@turing.cs.rpi.edu (Richard Harris)
- Date: Fri, 20 Apr 90 10:08:30 EDT
- Cc: commonloops.pa@Xerox.COM
- Redistributed: commonloops.pa
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))))))
====================