kernel: add full stack effects to unless, when, when*, unless* so they give useful stack imbalance errors
parent
87653c20da
commit
8feb6c68e2
|
@ -32,20 +32,20 @@ DEFER: if
|
|||
: if ( ..a ? true: ( ..a -- ..b ) false: ( ..a -- ..b ) -- ..b ) ? call ;
|
||||
|
||||
! Single branch
|
||||
: unless ( ? false -- )
|
||||
: unless ( ..a ? false: ( ..a -- ..a ) -- ..a )
|
||||
swap [ drop ] [ call ] if ; inline
|
||||
|
||||
: when ( ? true -- )
|
||||
: when ( ..a ? true: ( ..a -- ..a ) -- ..a )
|
||||
swap [ call ] [ drop ] if ; inline
|
||||
|
||||
! Anaphoric
|
||||
: if* ( ..a ? true: ( ..a ? -- ..b ) false: ( ..a -- ..b ) -- ..b )
|
||||
pick [ drop call ] [ 2nip call ] if ; inline
|
||||
|
||||
: when* ( ? true -- )
|
||||
: when* ( ..a ? true: ( ..a ? -- ..a ) -- ..a )
|
||||
over [ call ] [ 2drop ] if ; inline
|
||||
|
||||
: unless* ( ? false -- )
|
||||
: unless* ( ..a ? false: ( ..a -- ..a x ) -- ..a x )
|
||||
over [ drop ] [ nip call ] if ; inline
|
||||
|
||||
! Default
|
||||
|
|
Loading…
Reference in New Issue