Fix class resetting

db4
Slava Pestov 2008-04-03 00:21:53 -05:00
parent a27fa29098
commit 93d9722a6b
5 changed files with 15 additions and 8 deletions

View File

@ -7,7 +7,7 @@ IN: classes.mixin
PREDICATE: mixin-class < union-class "mixin" word-prop ; PREDICATE: mixin-class < union-class "mixin" word-prop ;
M: mixin-class reset-class M: mixin-class reset-class
{ "metaclass" "members" "mixin" } reset-props ; { "class" "metaclass" "members" "mixin" } reset-props ;
: redefine-mixin-class ( class members -- ) : redefine-mixin-class ( class members -- )
dupd define-union-class dupd define-union-class

View File

@ -25,5 +25,8 @@ PREDICATE: predicate-class < class
M: predicate-class reset-class M: predicate-class reset-class
{ {
"metaclass" "predicate-definition" "superclass" "class"
"metaclass"
"predicate-definition"
"superclass"
} reset-props ; } reset-props ;

View File

@ -212,6 +212,7 @@ M: tuple-class reset-class
] with each ] with each
] [ ] [
{ {
"class"
"metaclass" "metaclass"
"superclass" "superclass"
"layout" "layout"

View File

@ -29,4 +29,4 @@ M: union-class update-class define-union-predicate ;
2bi ; 2bi ;
M: union-class reset-class M: union-class reset-class
{ "metaclass" "members" } reset-props ; { "class" "metaclass" "members" } reset-props ;

View File

@ -505,8 +505,10 @@ SYMBOL: interactive-vocabs
: fix-class-words ( -- ) : fix-class-words ( -- )
#! If a class word had a compound definition which was #! If a class word had a compound definition which was
#! removed, it must go back to being a symbol. #! removed, it must go back to being a symbol.
new-definitions get first2 diff new-definitions get first2
[ nip dup reset-generic define-symbol ] assoc-each ; [ diff values [ [ reset-generic ] [ define-symbol ] bi ] each ]
[ swap diff values [ class? ] subset [ reset-class ] each ]
2bi ;
: forget-smudged ( -- ) : forget-smudged ( -- )
smudged-usage forget-all smudged-usage forget-all
@ -515,9 +517,10 @@ SYMBOL: interactive-vocabs
: finish-parsing ( lines quot -- ) : finish-parsing ( lines quot -- )
file get file get
[ record-form ] keep [ record-form ]
[ record-definitions ] keep [ record-definitions ]
record-checksum ; [ record-checksum ]
tri ;
: parse-stream ( stream name -- quot ) : parse-stream ( stream name -- quot )
[ [