From 3e5e3a6d3fb6800dc178afdf4eff4964951d6484 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 15 Feb 2010 18:34:45 +1300 Subject: [PATCH] classes: call reset-generic on predicate word to avoid redefinition problems (reported by littledan) --- core/classes/classes-tests.factor | 6 ++++++ core/classes/classes.factor | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/classes/classes-tests.factor b/core/classes/classes-tests.factor index 10a5f674bd..2b02d7c5a1 100644 --- a/core/classes/classes-tests.factor +++ b/core/classes/classes-tests.factor @@ -119,3 +119,9 @@ TUPLE: forgotten-predicate-test ; [ ] [ [ \ forgotten-predicate-test forget ] with-compilation-unit ] unit-test [ f ] [ \ forgotten-predicate-test? predicate? ] unit-test + +GENERIC: generic-predicate? ( a -- b ) + +[ ] [ "IN: classes.tests TUPLE: generic-predicate ;" eval( -- ) ] unit-test + +[ f ] [ \ generic-predicate? generic? ] unit-test diff --git a/core/classes/classes.factor b/core/classes/classes.factor index 6d68ad7fb4..a730636ca9 100644 --- a/core/classes/classes.factor +++ b/core/classes/classes.factor @@ -60,7 +60,8 @@ PRIVATE> : classes ( -- seq ) implementors-map get keys ; : create-predicate-word ( word -- predicate ) - [ name>> "?" append ] [ vocabulary>> ] bi create ; + [ name>> "?" append ] [ vocabulary>> ] bi + create dup reset-generic ; : predicate-word ( word -- predicate ) "predicate" word-prop first ;