Fix minor leak: class-caches were not reset if a class was forgotten

db4
Slava Pestov 2008-11-04 02:17:37 -06:00
parent 7134fad54c
commit 9b492b55e0
2 changed files with 14 additions and 2 deletions

View File

@ -3,7 +3,8 @@ kernel math namespaces parser prettyprint sequences strings
tools.test vectors words quotations classes tools.test vectors words quotations classes
classes.private classes.union classes.mixin classes.predicate classes.private classes.union classes.mixin classes.predicate
classes.algebra vectors definitions source-files classes.algebra vectors definitions source-files
compiler.units kernel.private sorting vocabs ; compiler.units kernel.private sorting vocabs memory eval
accessors ;
IN: classes.tests IN: classes.tests
[ t ] [ 3 object instance? ] unit-test [ t ] [ 3 object instance? ] unit-test
@ -27,3 +28,13 @@ M: method-forget-class method-forget-test ;
implementors-map get keys implementors-map get keys
[ natural-sort ] bi@ = [ natural-sort ] bi@ =
] unit-test ] 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

View File

@ -176,7 +176,8 @@ GENERIC: class-forgotten ( use class -- )
[ implementors-map- ] [ implementors-map- ]
[ update-map- ] [ update-map- ]
[ reset-class ] [ reset-class ]
} cleave ; } cleave
reset-caches ;
M: class class-forgotten M: class class-forgotten
nip forget-class ; nip forget-class ;