factor/basis/compiler/tests/stack-trace.factor

46 lines
1.3 KiB
Factor
Raw Normal View History

USING: accessors combinators.short-circuit compiler continuations
continuations.private fry generic generic.hook grouping io.backend
io.encodings.utf8 io.files io.files.temp kernel kernel.private math namespaces
parser sequences sorting splitting tools.test vocabs words ;
IN: compiler.tests.stack-trace
2007-09-20 18:09:08 -04:00
: symbolic-stack-trace ( -- newseq )
2008-09-02 02:53:01 -04:00
error-continuation get call>> callstack>array
3 group flip first ;
2007-09-20 18:09:08 -04:00
2008-06-08 16:32:55 -04:00
: foo ( -- * ) 3 throw 7 ;
: bar ( -- * ) foo 4 ;
: baz ( -- * ) bar 5 ;
[ baz ] [ 3 = ] must-fail-with
2007-09-28 00:26:58 -04:00
[ t ] [
symbolic-stack-trace
2009-08-18 04:49:05 -04:00
2 head*
2009-03-18 18:01:26 -04:00
{ baz bar foo } tail?
2007-09-20 18:09:08 -04:00
] unit-test
2008-06-08 16:32:55 -04:00
: bleh ( seq -- seq' ) [ 3 + ] map [ 0 > ] filter ;
2007-09-20 18:09:08 -04:00
: stack-trace-any? ( word -- ? ) symbolic-stack-trace member-eq? ;
2007-09-28 00:26:58 -04:00
2007-09-20 18:09:08 -04:00
[ t ] [
[ { 1 "hi" } bleh ] ignore-errors \ + stack-trace-any?
2007-09-20 18:09:08 -04:00
] unit-test
2009-08-18 04:49:05 -04:00
[ t f ] [
[ { "hi" } bleh ] ignore-errors
\ + stack-trace-any?
\ > stack-trace-any?
2007-09-20 18:09:08 -04:00
] unit-test
! #1265: Checks that the quotation index never is f (it's -1 instead).
{ f } [
[ normalize-path ] ignore-errors error-continuation get
call>> callstack>array [ f = ] any?
] unit-test
! Crashes factor if compiled in debug mode.
[ ] [
"USING: continuations io.backend ; [ normalize-path ] ignore-errors f"
"weird.factor" temp-file [ utf8 set-file-contents ] keep run-file
] unit-test