49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
USING: tools.test namespaces assocs alien.syntax kernel
 | 
						|
compiler.errors accessors alien alien.c-types alien.strings
 | 
						|
debugger literals kernel.private ;
 | 
						|
FROM: alien.libraries => add-library load-library ;
 | 
						|
IN: compiler.tests.linkage-errors
 | 
						|
 | 
						|
! Regression: calling an undefined function would raise a protection fault
 | 
						|
FUNCTION: void this_does_not_exist ( )
 | 
						|
 | 
						|
[ this_does_not_exist ] try
 | 
						|
 | 
						|
[ this_does_not_exist ] [
 | 
						|
    ${ "kernel-error" ERROR-UNDEFINED-SYMBOL "this_does_not_exist" string>symbol f }
 | 
						|
    =
 | 
						|
] must-fail-with
 | 
						|
 | 
						|
[ T{ no-such-symbol { name "this_does_not_exist" } } ]
 | 
						|
[
 | 
						|
    \ this_does_not_exist linkage-errors get at error>>
 | 
						|
    ! We don't care about the error message from dlerror, just
 | 
						|
    ! wipe it out
 | 
						|
    clone f >>message
 | 
						|
] unit-test
 | 
						|
 | 
						|
<< "no_such_library" "no_such_library" cdecl add-library >>
 | 
						|
 | 
						|
LIBRARY: no_such_library
 | 
						|
 | 
						|
FUNCTION: void no_such_function ( )
 | 
						|
 | 
						|
[ no_such_function ] try
 | 
						|
 | 
						|
[ no_such_function ] [
 | 
						|
    ${
 | 
						|
        "kernel-error" ERROR-UNDEFINED-SYMBOL
 | 
						|
        "no_such_function" string>symbol
 | 
						|
        "no_such_library" load-library
 | 
						|
    }
 | 
						|
    =
 | 
						|
] must-fail-with
 | 
						|
 | 
						|
[ T{ no-such-library { name "no_such_library" } } ]
 | 
						|
[
 | 
						|
    \ no_such_function linkage-errors get at error>>
 | 
						|
    ! We don't care about the error message from dlerror, just
 | 
						|
    ! wipe it out
 | 
						|
    clone f >>message
 | 
						|
] unit-test
 |