diff --git a/core/classes/classes-tests.factor b/core/classes/classes-tests.factor index 1dee6a095c..dd12674cc4 100644 --- a/core/classes/classes-tests.factor +++ b/core/classes/classes-tests.factor @@ -3,7 +3,8 @@ kernel math namespaces parser prettyprint sequences strings tools.test vectors words quotations classes classes.private classes.union classes.mixin classes.predicate classes.algebra vectors definitions source-files -compiler.units kernel.private sorting vocabs ; +compiler.units kernel.private sorting vocabs memory eval +accessors ; IN: classes.tests [ t ] [ 3 object instance? ] unit-test @@ -27,3 +28,13 @@ M: method-forget-class method-forget-test ; implementors-map get keys [ natural-sort ] bi@ = ] unit-test + +! Minor leak +[ ] [ "IN: classes.tests TUPLE: forget-me ;" eval ] unit-test +[ ] [ f \ word set-global ] unit-test +[ ] [ "IN: classes.tests USE: kernel USE: classes.algebra forget-me tuple class<= drop" eval ] unit-test +[ ] [ "IN: classes.tests FORGET: forget-me" eval ] unit-test +[ 0 ] [ + [ word? ] instances + [ [ name>> "forget-me" = ] [ vocabulary>> "classes.tests" = ] bi and ] count +] unit-test diff --git a/core/classes/classes.factor b/core/classes/classes.factor index dcb69c9149..70fb869c5c 100644 --- a/core/classes/classes.factor +++ b/core/classes/classes.factor @@ -176,7 +176,8 @@ GENERIC: class-forgotten ( use class -- ) [ implementors-map- ] [ update-map- ] [ reset-class ] - } cleave ; + } cleave + reset-caches ; M: class class-forgotten nip forget-class ;