better error reporting for push/pop on dlists
parent
191e95d8c1
commit
91aa69dda6
|
@ -98,5 +98,7 @@ IN: dlists.tests
|
||||||
[ t ] [ <dlist> 4 over push-back 5 over push-back* [ = ] curry dlist-find-node drop class dlist-node = ] unit-test
|
[ t ] [ <dlist> 4 over push-back 5 over push-back* [ = ] curry dlist-find-node drop class dlist-node = ] unit-test
|
||||||
[ ] [ <dlist> 4 over push-back 5 over push-back [ drop ] dlist-each ] unit-test
|
[ ] [ <dlist> 4 over push-back 5 over push-back [ drop ] dlist-each ] unit-test
|
||||||
|
|
||||||
[ f ] [ <dlist> peek-front ] unit-test
|
[ <dlist> peek-front ] must-fail
|
||||||
[ f ] [ <dlist> peek-back ] unit-test
|
[ <dlist> peek-back ] must-fail
|
||||||
|
[ <dlist> pop-front ] [ empty-dlist? ] must-fail-with
|
||||||
|
[ <dlist> pop-back ] [ empty-dlist? ] must-fail-with
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2007, 2008 Mackenzie Straight, Doug Coleman,
|
! Copyright (C) 2007, 2008 Mackenzie Straight, Doug Coleman,
|
||||||
! Slava Pestov.
|
! Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: combinators kernel math sequences accessors ;
|
USING: combinators kernel math sequences accessors inspector ;
|
||||||
IN: dlists
|
IN: dlists
|
||||||
|
|
||||||
TUPLE: dlist front back length ;
|
TUPLE: dlist front back length ;
|
||||||
|
@ -84,11 +84,17 @@ PRIVATE>
|
||||||
: push-all-back ( seq dlist -- )
|
: push-all-back ( seq dlist -- )
|
||||||
[ push-back ] curry each ;
|
[ push-back ] curry each ;
|
||||||
|
|
||||||
|
ERROR: empty-dlist ;
|
||||||
|
|
||||||
|
M: empty-dlist summary ( dlist -- )
|
||||||
|
drop "Emtpy dlist" ;
|
||||||
|
|
||||||
: peek-front ( dlist -- obj )
|
: peek-front ( dlist -- obj )
|
||||||
front>> dup [ obj>> ] when ;
|
front>> [ empty-dlist ] unless* obj>> ;
|
||||||
|
|
||||||
: pop-front ( dlist -- obj )
|
: pop-front ( dlist -- obj )
|
||||||
dup front>> [
|
dup front>> [ empty-dlist ] unless*
|
||||||
|
[
|
||||||
dup next>>
|
dup next>>
|
||||||
f rot (>>next)
|
f rot (>>next)
|
||||||
f over set-prev-when
|
f over set-prev-when
|
||||||
|
@ -100,10 +106,11 @@ PRIVATE>
|
||||||
pop-front drop ;
|
pop-front drop ;
|
||||||
|
|
||||||
: peek-back ( dlist -- obj )
|
: peek-back ( dlist -- obj )
|
||||||
back>> dup [ obj>> ] when ;
|
back>> [ empty-dlist ] unless* obj>> ;
|
||||||
|
|
||||||
: pop-back ( dlist -- obj )
|
: pop-back ( dlist -- obj )
|
||||||
dup back>> [
|
dup back>> [ empty-dlist ] unless*
|
||||||
|
[
|
||||||
dup prev>>
|
dup prev>>
|
||||||
f rot (>>prev)
|
f rot (>>prev)
|
||||||
f over set-next-when
|
f over set-next-when
|
||||||
|
|
Loading…
Reference in New Issue