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 ;
M: mixin-class reset-class
{ "metaclass" "members" "mixin" } reset-props ;
{ "class" "metaclass" "members" "mixin" } reset-props ;
: redefine-mixin-class ( class members -- )
dupd define-union-class

View File

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

View File

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

View File

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