From 93d9722a6bb3bc9c956f10475febcbe85ddf61fd Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 3 Apr 2008 00:21:53 -0500 Subject: [PATCH] Fix class resetting --- core/classes/mixin/mixin.factor | 2 +- core/classes/predicate/predicate.factor | 5 ++++- core/classes/tuple/tuple.factor | 1 + core/classes/union/union.factor | 2 +- core/parser/parser.factor | 13 ++++++++----- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/classes/mixin/mixin.factor b/core/classes/mixin/mixin.factor index b771aa8920..aefd522269 100755 --- a/core/classes/mixin/mixin.factor +++ b/core/classes/mixin/mixin.factor @@ -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 diff --git a/core/classes/predicate/predicate.factor b/core/classes/predicate/predicate.factor index 0f98f1f5c4..4729a6dd5e 100755 --- a/core/classes/predicate/predicate.factor +++ b/core/classes/predicate/predicate.factor @@ -25,5 +25,8 @@ PREDICATE: predicate-class < class M: predicate-class reset-class { - "metaclass" "predicate-definition" "superclass" + "class" + "metaclass" + "predicate-definition" + "superclass" } reset-props ; diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor index ac1a7b8849..58c6f2c581 100755 --- a/core/classes/tuple/tuple.factor +++ b/core/classes/tuple/tuple.factor @@ -212,6 +212,7 @@ M: tuple-class reset-class ] with each ] [ { + "class" "metaclass" "superclass" "layout" diff --git a/core/classes/union/union.factor b/core/classes/union/union.factor index 9079974a60..09f8f88ced 100755 --- a/core/classes/union/union.factor +++ b/core/classes/union/union.factor @@ -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 ; diff --git a/core/parser/parser.factor b/core/parser/parser.factor index 2a481d413d..5551ac8af0 100755 --- a/core/parser/parser.factor +++ b/core/parser/parser.factor @@ -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 ) [