Fix define-transform bug

release
Slava Pestov 2007-10-10 01:53:55 -04:00
parent 8761885287
commit c84ba1d76b
3 changed files with 14 additions and 6 deletions

View File

@ -273,3 +273,9 @@ USE: sorting.private
10 20 >vector <flat-slice> 10 20 >vector <flat-slice>
[ [ - ] swap old-binsearch ] compile-1 2nip [ [ - ] swap old-binsearch ] compile-1 2nip
] unit-test ] unit-test
! Regression
[ 1 2 { real imaginary } ] [
C{ 1 2 }
[ { real imaginary } [ get-slots ] keep ] compile-1
] unit-test

View File

@ -347,6 +347,9 @@ DEFER: bar
[ t ] [ [ [ r> ] infer short-effect ] catch inference-error? ] unit-test [ t ] [ [ [ r> ] infer short-effect ] catch inference-error? ] unit-test
! Regression
[ t ] [ [ [ get-slots ] infer ] catch inference-error? ] unit-test
! Test some curry stuff ! Test some curry stuff
[ { 1 1 } ] [ [ 3 [ ] curry 4 [ ] curry if ] infer short-effect ] unit-test [ { 1 1 } ] [ [ 3 [ ] curry 4 [ ] curry if ] infer short-effect ] unit-test

View File

@ -6,12 +6,11 @@ inference.dataflow tuples.private ;
IN: inference.transforms IN: inference.transforms
: pop-literals ( n -- rstate seq ) : pop-literals ( n -- rstate seq )
dup zero? [ drop recursive-state get f ] [ dup zero? [
[ ensure-values ] keep drop recursive-state get { }
[ d-tail ] keep ] [
(consume-values) dup ensure-values
dup [ value-literal ] map f swap [ 2drop pop-literal ] map reverse
swap first value-recursion swap
] if ; ] if ;
: transform-quot ( quot n -- newquot ) : transform-quot ( quot n -- newquot )