From 7bc32975ee2ef5c5df29fcd005235eb5a4eee3ad Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 3 Sep 2008 23:38:32 -0500 Subject: [PATCH] Fix erg's bug --- core/generic/generic-tests.factor | 30 +++++++++++++++++++++++++++--- core/generic/generic.factor | 2 +- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/core/generic/generic-tests.factor b/core/generic/generic-tests.factor index ab39cbcbb8..22c690ffaf 100755 --- a/core/generic/generic-tests.factor +++ b/core/generic/generic-tests.factor @@ -2,7 +2,7 @@ USING: accessors alien arrays definitions generic generic.standard generic.math assocs hashtables io kernel math namespaces parser prettyprint sequences strings tools.test vectors words quotations classes classes.algebra classes.tuple continuations -layouts classes.union sorting compiler.units eval ; +layouts classes.union sorting compiler.units eval multiline ; IN: generic.tests GENERIC: foobar ( x -- y ) @@ -135,7 +135,7 @@ M: f tag-and-f 4 ; [ 3.4 3 ] [ 3.4 tag-and-f ] unit-test ! Issues with forget -GENERIC: generic-forget-test-1 +GENERIC: generic-forget-test-1 ( a b -- c ) M: integer generic-forget-test-1 / ; @@ -187,7 +187,7 @@ M: f generic-forget-test-3 ; : a-word ; -GENERIC: a-generic +GENERIC: a-generic ( a -- b ) M: integer a-generic a-word ; @@ -198,3 +198,27 @@ M: integer a-generic a-word ; [ ] [ "IN: generic.tests : a-generic ;" eval ] unit-test [ f ] [ "m" get \ a-word usage memq? ] unit-test + +! erg's regression +[ ] [ + <" + IN: compiler.tests + + GENERIC: jeah ( a -- b ) + TUPLE: boii ; + M: boii jeah ; + GENERIC: jeah* ( a -- b ) + M: boii jeah* jeah ; + "> eval + + <" + IN: compiler.tests + FORGET: boii + "> eval + + <" + IN: compiler.tests + TUPLE: boii ; + M: boii jeah ; + "> eval +] unit-test diff --git a/core/generic/generic.factor b/core/generic/generic.factor index f2c154b3b2..c0a21dbaba 100755 --- a/core/generic/generic.factor +++ b/core/generic/generic.factor @@ -130,7 +130,7 @@ M: method-spec definition first2 method definition ; M: method-spec forget* - first2 method forget* ; + first2 method [ forgotten-definition ] [ forget* ] bi ; M: method-spec smart-usage second smart-usage ;