From 0a3429810c2a7fd3ae5be158531ecfabc82fe65f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 10 May 2008 16:28:02 -0500 Subject: [PATCH] Fix classes.tuple unit test failures --- core/classes/tuple/tuple-tests.factor | 4 +++- core/classes/tuple/tuple.factor | 5 +++++ core/generic/generic.factor | 12 +++++++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/classes/tuple/tuple-tests.factor b/core/classes/tuple/tuple-tests.factor index fb9530b1c5..0cf7ea3510 100755 --- a/core/classes/tuple/tuple-tests.factor +++ b/core/classes/tuple/tuple-tests.factor @@ -541,7 +541,7 @@ TUPLE: another-forget-accessors-test ; ] unit-test ! Missing error check -[ "IN: tuples.test USE: words TUPLE: wrong-superclass < word ;" eval ] must-fail +[ "IN: classes.tuple.tests USE: words TUPLE: wrong-superclass < word ;" eval ] must-fail TUPLE: subclass-forget-test ; @@ -554,3 +554,5 @@ TUPLE: subclass-forget-test-3 < subclass-forget-test-2 ; [ f ] [ subclass-forget-test-1 tuple-class? ] unit-test [ f ] [ subclass-forget-test-2 tuple-class? ] unit-test [ subclass-forget-test-3 new ] must-fail + +[ "IN: classes.tuple.tests TUPLE: subclass-forget-test-4 < subclass-forget-test-2 ;" eval ] must-fail diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor index 5ebcc7a286..ae0c315726 100755 --- a/core/classes/tuple/tuple.factor +++ b/core/classes/tuple/tuple.factor @@ -226,6 +226,11 @@ M: tuple-class reset-class } reset-props ] bi ; +M: tuple-class forget* + [ [ reset-class ] each-subclass ] + [ call-next-method ] + bi ; + M: tuple-class rank-class drop 0 ; M: tuple clone diff --git a/core/generic/generic.factor b/core/generic/generic.factor index 2ef988139a..e446689303 100755 --- a/core/generic/generic.factor +++ b/core/generic/generic.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: words kernel sequences namespaces assocs hashtables definitions kernel.private classes classes.private -classes.algebra quotations arrays vocabs effects ; +classes.algebra quotations arrays vocabs effects combinators ; IN: generic ! Method combination protocol @@ -147,10 +147,12 @@ M: method-body forget* [ implementors ] [ [ swap 2array ] curry ] bi map forget-all ; M: class forget* ( class -- ) - [ forget-methods ] - [ update-map- ] - [ call-next-method ] - tri ; + { + [ forget-methods ] + [ update-map- ] + [ reset-class ] + [ call-next-method ] + } cleave ; M: assoc update-methods ( assoc -- ) implementors* [ make-generic ] each ;