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
]
[ 2drop t "class" set-word-prop ]
[ 2drop f "defining-class" set-word-prop ]
[ 2drop update-map+ ]
[ nip ?metaclass-changed ]
} 3cleave ;

View File

@ -246,16 +246,10 @@ M: tuple-class update-class
[ define-tuple-prototype ]
} 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 -- )
{
[ drop f f tuple-class define-class ]
[ nip "slots" set-word-prop ]
[ 2drop update-classes ]
[ 2drop f "defining-class" set-word-prop ]
} 3cleave ;
[ 2drop update-classes ] 3tri ;
: subclasses ( class -- classes )
class-usages [ tuple-class? ] filter ;