diff --git a/core/generic/generic.factor b/core/generic/generic.factor index 553ced5800..f2c154b3b2 100755 --- a/core/generic/generic.factor +++ b/core/generic/generic.factor @@ -105,6 +105,10 @@ M: method-body crossref? drop [ dup ] 2keep reveal-method ] if ; +PREDICATE: default-method < word "default" word-prop ; + +M: default-method irrelevant? drop t ; + : ( generic combination -- method ) [ drop object bootstrap-word swap ] [ make-default-method ] 2bi [ define ] [ drop t "default" set-word-prop ] [ drop ] 2tri ; @@ -137,7 +141,7 @@ M: method-body definer M: method-body forget* dup "forgotten" word-prop [ drop ] [ [ - dup "default" word-prop [ drop ] [ + dup default-method? [ drop ] [ [ [ "method-class" word-prop ] [ "method-generic" word-prop ] bi diff --git a/core/generic/standard/standard.factor b/core/generic/standard/standard.factor index 503c72290a..860781e5e2 100644 --- a/core/generic/standard/standard.factor +++ b/core/generic/standard/standard.factor @@ -26,10 +26,6 @@ ERROR: no-method object generic ; : error-method ( word -- quot ) picker swap [ no-method ] curry append ; -: default-method ( word -- pair ) - "default-method" word-prop - object bootstrap-word swap 2array ; - : push-method ( method specializer atomic assoc -- ) [ [ H{ } clone ] unless*