Annotation of gforth/assert.fs, revision 1.1

1.1     ! anton       1: \ assertions
        !             2: 
        !             3: \ !! factor out line number printing, share with debugging.fs
        !             4: 
        !             5: variable assert-level \ all assertions above this level are turned off
        !             6: 1 assert-level !
        !             7: 
        !             8: : assertn ( n -- )
        !             9:     assert-level @ >
        !            10:     if
        !            11:        POSTPONE (
        !            12:     then ;
        !            13: 
        !            14: : assert0( ( -- )
        !            15:     0 assertn ; immediate
        !            16: : assert1( ( -- )
        !            17:     1 assertn ; immediate
        !            18: : assert2( ( -- )
        !            19:     2 assertn ; immediate
        !            20: : assert3( ( -- )
        !            21:     3 assertn ; immediate
        !            22: : assert( ( -- )
        !            23:     POSTPONE assert1( ; immediate
        !            24: 
        !            25: : (endassert) ( flag -- )
        !            26:     \ three inline arguments
        !            27:     if
        !            28:        r> 3 cells + >r EXIT
        !            29:     else
        !            30:        r>
        !            31:        dup 2@ type ." :" cell+ cell+
        !            32:        @ 0 .r ." : failed assertion"
        !            33:        true abort" assertion failed" \ !! or use a new throw code?
        !            34:     then ;
        !            35: 
        !            36: : ) ( -- )
        !            37:     POSTPONE (endassert) loadfilename 2@ 2, loadline @ , ; immediate

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>