diff --git a/core/classes/classes.factor b/core/classes/classes.factor index a730636ca9..28f0b192ee 100644 --- a/core/classes/classes.factor +++ b/core/classes/classes.factor @@ -59,15 +59,15 @@ PRIVATE> : classes ( -- seq ) implementors-map get keys ; +PREDICATE: predicate < word "predicating" word-prop >boolean ; + : create-predicate-word ( word -- predicate ) - [ name>> "?" append ] [ vocabulary>> ] bi - create dup reset-generic ; + [ name>> "?" append ] [ vocabulary>> ] bi create + dup predicate? [ dup reset-generic ] unless ; : predicate-word ( word -- predicate ) "predicate" word-prop first ; -PREDICATE: predicate < word "predicating" word-prop >boolean ; - M: predicate flushable? drop t ; M: predicate forget* diff --git a/core/classes/tuple/tuple-tests.factor b/core/classes/tuple/tuple-tests.factor index f452d8fb28..36d402c61d 100644 --- a/core/classes/tuple/tuple-tests.factor +++ b/core/classes/tuple/tuple-tests.factor @@ -764,3 +764,9 @@ DEFER: factor-crashes-anymore ] unit-test [ 31337 ] [ factor-crashes-anymore ] unit-test + +TUPLE: tuple-predicate-redefine-test ; + +[ ] [ "IN: classes.tuple.tests TUPLE: tuple-predicate-redefine-test ;" eval( -- ) ] unit-test + +[ t ] [ \ tuple-predicate-redefine-test? predicate? ] unit-test