From a6b57c495fa2c9c1458308f82f14b7608cd9d43a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 12 Mar 2009 20:37:26 -0500 Subject: [PATCH] Fix check-slice --- core/sequences/sequences-tests.factor | 4 ++++ core/sequences/sequences.factor | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/sequences/sequences-tests.factor b/core/sequences/sequences-tests.factor index dbbf49ef36..da495f410f 100644 --- a/core/sequences/sequences-tests.factor +++ b/core/sequences/sequences-tests.factor @@ -13,6 +13,10 @@ IN: sequences.tests [ V{ 4 5 } ] [ { 1 2 3 4 5 } 2 tail-slice* >vector ] unit-test [ V{ 3 4 } ] [ 2 4 1 10 dup subseq >vector ] unit-test [ V{ 3 4 } ] [ 0 2 2 4 1 10 dup subseq >vector ] unit-test +[ 0 10 "hello" ] must-fail +[ -10 3 "hello" ] must-fail +[ 2 1 "hello" ] must-fail + [ "cba" ] [ "abcdef" 3 head-slice reverse ] unit-test [ 5040 ] [ [ 1 2 3 4 5 6 7 ] 1 [ * ] reduce ] unit-test diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index c5ff787768..144b417f04 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -221,8 +221,9 @@ TUPLE: slice-error from to seq reason ; : check-slice ( from to seq -- from to seq ) 3dup [ 2drop 0 < "start < 0" slice-error ] - [ nip length > "end > sequence" slice-error ] - [ drop > "start > end" slice-error ] 3tri ; inline + [ [ drop ] 2dip length > "end > sequence" slice-error ] + [ drop > "start > end" slice-error ] + 3tri ; inline : ( from to seq -- slice ) dup slice? [ collapse-slice ] when