classes: unset defining-class in define-class.

locals-and-roots
John Benediktsson 2016-04-13 16:41:42 -07:00
parent 331483ab98
commit a7814b9358
2 changed files with 4 additions and 9 deletions

View File

@ -196,6 +196,7 @@ GENERIC: metaclass-changed ( use class -- )
2bi 2bi
] ]
[ 2drop t "class" set-word-prop ] [ 2drop t "class" set-word-prop ]
[ 2drop f "defining-class" set-word-prop ]
[ 2drop update-map+ ] [ 2drop update-map+ ]
[ nip ?metaclass-changed ] [ nip ?metaclass-changed ]
} 3cleave ; } 3cleave ;

View File

@ -246,16 +246,10 @@ M: tuple-class update-class
[ define-tuple-prototype ] [ define-tuple-prototype ]
} cleave ; } cleave ;
! The "defining-class" word-prop is to ensure that the tuple being
! defined becomes a classoid as it's being parsed so that it can
! be used as the type of its own slots.
: define-new-tuple-class ( class superclass slots -- ) : define-new-tuple-class ( class superclass slots -- )
{ [ drop f f tuple-class define-class ]
[ drop f f tuple-class define-class ] [ nip "slots" set-word-prop ]
[ nip "slots" set-word-prop ] [ 2drop update-classes ] 3tri ;
[ 2drop update-classes ]
[ 2drop f "defining-class" set-word-prop ]
} 3cleave ;
: subclasses ( class -- classes ) : subclasses ( class -- classes )
class-usages [ tuple-class? ] filter ; class-usages [ tuple-class? ] filter ;