From c84ba1d76ba49b651193a9b094b18666369c4ff8 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 10 Oct 2007 01:53:55 -0400 Subject: [PATCH] Fix define-transform bug --- core/compiler/test/optimizer.factor | 6 ++++++ core/inference/inference-tests.factor | 3 +++ core/inference/transforms/transforms.factor | 11 +++++------ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/core/compiler/test/optimizer.factor b/core/compiler/test/optimizer.factor index 496c6f24ec..e05164cfdd 100644 --- a/core/compiler/test/optimizer.factor +++ b/core/compiler/test/optimizer.factor @@ -273,3 +273,9 @@ USE: sorting.private 10 20 >vector [ [ - ] swap old-binsearch ] compile-1 2nip ] unit-test + +! Regression +[ 1 2 { real imaginary } ] [ + C{ 1 2 } + [ { real imaginary } [ get-slots ] keep ] compile-1 +] unit-test diff --git a/core/inference/inference-tests.factor b/core/inference/inference-tests.factor index f83dc3a4fd..cefad52cd7 100644 --- a/core/inference/inference-tests.factor +++ b/core/inference/inference-tests.factor @@ -347,6 +347,9 @@ DEFER: bar [ t ] [ [ [ r> ] infer short-effect ] catch inference-error? ] unit-test +! Regression +[ t ] [ [ [ get-slots ] infer ] catch inference-error? ] unit-test + ! Test some curry stuff [ { 1 1 } ] [ [ 3 [ ] curry 4 [ ] curry if ] infer short-effect ] unit-test diff --git a/core/inference/transforms/transforms.factor b/core/inference/transforms/transforms.factor index 71ccbc3c35..b52357fc81 100644 --- a/core/inference/transforms/transforms.factor +++ b/core/inference/transforms/transforms.factor @@ -6,12 +6,11 @@ inference.dataflow tuples.private ; IN: inference.transforms : pop-literals ( n -- rstate seq ) - dup zero? [ drop recursive-state get f ] [ - [ ensure-values ] keep - [ d-tail ] keep - (consume-values) - dup [ value-literal ] map - swap first value-recursion swap + dup zero? [ + drop recursive-state get { } + ] [ + dup ensure-values + f swap [ 2drop pop-literal ] map reverse ] if ; : transform-quot ( quot n -- newquot )