From 16377be935bcfb1a9346d8d78c22f486baeac2a1 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 3 Apr 2008 05:57:20 -0500 Subject: [PATCH] Use call-next-method --- core/classes/tuple/tuple.factor | 4 ++-- core/generic/generic.factor | 21 ++++++++------------- core/words/words-docs.factor | 6 +----- core/words/words.factor | 8 +------- 4 files changed, 12 insertions(+), 27 deletions(-) diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor index 58c6f2c581..b1cb3f8a66 100755 --- a/core/classes/tuple/tuple.factor +++ b/core/classes/tuple/tuple.factor @@ -207,8 +207,8 @@ M: tuple-class define-tuple-class M: tuple-class reset-class [ dup "slot-names" word-prop [ - [ reader-word forget-method ] - [ writer-word forget-method ] 2bi + [ reader-word method forget ] + [ writer-word method forget ] 2bi ] with each ] [ { diff --git a/core/generic/generic.factor b/core/generic/generic.factor index b0099f770c..72948c5473 100755 --- a/core/generic/generic.factor +++ b/core/generic/generic.factor @@ -106,14 +106,6 @@ M: method-spec definer M: method-spec definition first2 method definition ; -: forget-method ( class generic -- ) - dup generic? [ - [ delete-at* ] with-methods - [ forget-word ] [ drop ] if - ] [ - 2drop - ] if ; - M: method-spec forget* first2 method forget* ; @@ -123,9 +115,12 @@ M: method-body definer M: method-body forget* dup "forgotten" word-prop [ drop ] [ [ - [ "method-class" word-prop ] + [ "method-class" word-prop ] [ "method-generic" word-prop ] bi - forget-method + dup generic? [ + [ delete-at* ] with-methods + [ call-next-method ] [ drop ] if + ] [ 2drop ] if ] [ t "forgotten" set-word-prop ] bi ] if ; @@ -145,7 +140,7 @@ M: method-body forget* M: class forget* ( class -- ) [ forget-methods ] [ update-map- ] - [ forget-word ] + [ call-next-method ] tri ; M: assoc update-methods ( assoc -- ) @@ -169,8 +164,8 @@ M: generic subwords tri ] { } make ; -M: generic forget-word - [ subwords forget-all ] [ (forget-word) ] bi ; +M: generic forget* + [ subwords forget-all ] [ call-next-method ] bi ; : xref-generics ( -- ) all-words [ subwords [ xref ] each ] each ; diff --git a/core/words/words-docs.factor b/core/words/words-docs.factor index eb1bd0908a..a715aab64f 100755 --- a/core/words/words-docs.factor +++ b/core/words/words-docs.factor @@ -324,11 +324,7 @@ HELP: constructor-word { $description "Creates a new word, surrounding " { $snippet "name" } " in angle brackets." } { $examples { $example "USING: prettyprint words ;" "\"salmon\" \"scratchpad\" constructor-word ." "" } } ; -HELP: forget-word -{ $values { "word" word } } -{ $description "Removes a word from its vocabulary. User code should call " { $link forget } " instead, since it also does the right thing when forgetting class words." } ; - -{ POSTPONE: FORGET: forget forget-word forget-vocab } related-words +{ POSTPONE: FORGET: forget forget* forget-vocab } related-words HELP: target-word { $values { "word" word } { "target" word } } diff --git a/core/words/words.factor b/core/words/words.factor index 1232a97ddc..059815e952 100755 --- a/core/words/words.factor +++ b/core/words/words.factor @@ -212,9 +212,7 @@ M: word where "loc" word-prop ; M: word set-where swap "loc" set-word-prop ; -GENERIC: forget-word ( word -- ) - -: (forget-word) ( word -- ) +M: word forget* dup "forgotten" word-prop [ dup delete-xref dup delete-compiled-xref @@ -222,10 +220,6 @@ GENERIC: forget-word ( word -- ) dup t "forgotten" set-word-prop ] unless drop ; -M: word forget-word (forget-word) ; - -M: word forget* forget-word ; - M: word hashcode* nip 1 slot { fixnum } declare ;