version 1.3, 1995/03/13 09:17:23
|
version 1.4, 1995/10/16 18:33:05
|
Line 2
|
Line 2
|
|
|
\ !! factor out line number printing, share with debugging.fs |
\ !! factor out line number printing, share with debugging.fs |
|
|
variable assert-level ( -- a-addr ) \ new |
variable assert-level ( -- a-addr ) \ gforth |
\G all assertions above this level are turned off |
\G all assertions above this level are turned off |
1 assert-level ! |
1 assert-level ! |
|
|
: assertn ( n -- ) \ new |
: assertn ( n -- ) \ gforth assert-n |
\ this is internal (it is not immediate) |
\ this is internal (it is not immediate) |
assert-level @ > |
assert-level @ > |
if |
if |
POSTPONE ( |
POSTPONE ( |
then ; |
then ; |
|
|
: assert0( ( -- ) \ new |
: assert0( ( -- ) \ gforth assert-zero |
\G important assertions that should always be turned on |
\G important assertions that should always be turned on |
0 assertn ; immediate |
0 assertn ; immediate |
: assert1( ( -- ) \ new |
: assert1( ( -- ) \ gforth assert-one |
\G normal assertions; turned on by default |
\G normal assertions; turned on by default |
1 assertn ; immediate |
1 assertn ; immediate |
: assert2( ( -- ) \ new |
: assert2( ( -- ) \ gforth assert-two |
\G debugging assertions |
\G debugging assertions |
2 assertn ; immediate |
2 assertn ; immediate |
: assert3( ( -- ) \ new |
: assert3( ( -- ) \ gforth assert-three |
\G slow assertions that you may not want to turn on in normal debugging; |
\G slow assertions that you may not want to turn on in normal debugging; |
\G you would turn them on mainly for thorough checking |
\G you would turn them on mainly for thorough checking |
3 assertn ; immediate |
3 assertn ; immediate |
: assert( ( -- ) \ new |
: assert( ( -- ) \ gforth |
\G equivalent to assert1( |
\G equivalent to assert1( |
POSTPONE assert1( ; immediate |
POSTPONE assert1( ; immediate |
|
|
: (endassert) ( flag -- ) \ new |
: (endassert) ( flag -- ) \ gforth-internal |
\ three inline arguments |
\ three inline arguments |
if |
if |
r> 3 cells + >r EXIT |
r> 3 cells + >r EXIT |
Line 41 variable assert-level ( -- a-addr ) \ ne
|
Line 41 variable assert-level ( -- a-addr ) \ ne
|
true abort" assertion failed" \ !! or use a new throw code? |
true abort" assertion failed" \ !! or use a new throw code? |
then ; |
then ; |
|
|
: ) ( -- ) \ new |
: ) ( -- ) \ gforth close-paren |
|
\G end an assertion |
POSTPONE (endassert) loadfilename 2@ 2, loadline @ , ; immediate |
POSTPONE (endassert) loadfilename 2@ 2, loadline @ , ; immediate |