From 1a43d30d54ead60ebdc836cf1c45e1423990be22 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 12 Jan 2008 18:00:28 -0500 Subject: [PATCH] Fix tuple class redefinition not updating constructor --- core/inference/transforms/transforms.factor | 11 ++++++++--- core/tuples/tuples.factor | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/inference/transforms/transforms.factor b/core/inference/transforms/transforms.factor index e36d703be8..62c3129f3a 100755 --- a/core/inference/transforms/transforms.factor +++ b/core/inference/transforms/transforms.factor @@ -61,6 +61,11 @@ M: pair (bitfield-quot) ( spec -- quot ) \ set-slots [ [get-slots] ] 1 define-transform -\ construct-boa [ - dup tuple-size [ ] 2curry -] 1 define-transform +: [construct] ( word quot -- newquot ) + >r dup +inlined+ depends-on dup tuple-size r> 2curry ; + +\ construct-boa +[ [ ] [construct] ] 1 define-transform + +\ construct-empty +[ [ ] [construct] ] 1 define-transform diff --git a/core/tuples/tuples.factor b/core/tuples/tuples.factor index 6eff703cbd..476cf4fa38 100644 --- a/core/tuples/tuples.factor +++ b/core/tuples/tuples.factor @@ -59,7 +59,7 @@ M: tuple class class-of-tuple ; ] unless ] when 2drop ; -GENERIC: tuple-size ( class -- size ) foldable +GENERIC: tuple-size ( class -- size ) M: tuple-class tuple-size "slot-names" word-prop length 2 + ;