classes: unset defining-class in define-class.
parent
331483ab98
commit
a7814b9358
|
@ -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 ;
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
Loading…
Reference in New Issue