40 lines
		
	
	
		
			879 B
		
	
	
	
		
			Factor
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			879 B
		
	
	
	
		
			Factor
		
	
	
		
			Executable File
		
	
IN: compiler.tests
 | 
						|
USING: compiler tools.test namespaces sequences
 | 
						|
kernel.private kernel math continuations continuations.private
 | 
						|
words splitting sorting ;
 | 
						|
 | 
						|
: symbolic-stack-trace ( -- newseq )
 | 
						|
    error-continuation get continuation-call callstack>array
 | 
						|
    2 group flip first ;
 | 
						|
 | 
						|
: foo 3 throw 7 ;
 | 
						|
: bar foo 4 ;
 | 
						|
: baz bar 5 ;
 | 
						|
[ baz ] [ 3 = ] must-fail-with
 | 
						|
[ t ] [
 | 
						|
    symbolic-stack-trace
 | 
						|
    [ word? ] subset
 | 
						|
    { baz bar foo throw } tail?
 | 
						|
] unit-test
 | 
						|
 | 
						|
: bleh [ 3 + ] map [ 0 > ] subset ;
 | 
						|
 | 
						|
: stack-trace-contains? symbolic-stack-trace memq? ;
 | 
						|
 | 
						|
[ t ] [
 | 
						|
    [ { 1 "hi" } bleh ] ignore-errors \ + stack-trace-contains?
 | 
						|
] unit-test
 | 
						|
    
 | 
						|
[ t f ] [
 | 
						|
    [ { "hi" } bleh ] ignore-errors
 | 
						|
    \ + stack-trace-contains?
 | 
						|
    \ > stack-trace-contains?
 | 
						|
] unit-test
 | 
						|
 | 
						|
: quux { 1 2 3 } [ "hi" throw ] sort ;
 | 
						|
 | 
						|
[ t ] [
 | 
						|
    [ 10 quux ] ignore-errors
 | 
						|
    \ sort stack-trace-contains?
 | 
						|
] unit-test
 |