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