| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  | USING: accessors io io.encodings.ascii io.files io.files.temp | 
					
						
							|  |  |  | io.launcher kernel make sequences system tools.test ;
 | 
					
						
							| 
									
										
										
										
											2011-10-03 00:58:58 -04:00
										 |  |  | IN: compiler.tests.callback-error | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  | : callback-error-script ( -- path )
 | 
					
						
							|  |  |  |     "callback-error-script" temp-file ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : run-vm-with-script ( -- lines )
 | 
					
						
							|  |  |  |     <process> | 
					
						
							|  |  |  |         [ vm , callback-error-script , ] { } make >>command | 
					
						
							| 
									
										
										
										
											2011-10-03 00:58:58 -04:00
										 |  |  |         +closed+ >>stdin | 
					
						
							|  |  |  |         +stdout+ >>stderr | 
					
						
							|  |  |  |     ascii <process-reader> stream-lines ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  | [ ] [ | 
					
						
							|  |  |  |     """USING: alien alien.c-types alien.syntax kernel ;
 | 
					
						
							| 
									
										
										
										
											2011-10-03 00:58:58 -04:00
										 |  |  |     IN: scratchpad | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     : callback-death ( -- callback )
 | 
					
						
							|  |  |  |         void { } cdecl [ "Error!" throw ] alien-callback ;
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     : callback-invoke ( callback -- )
 | 
					
						
							|  |  |  |         void { } cdecl alien-indirect ;
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     callback-death callback-invoke""" | 
					
						
							| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  |     callback-error-script ascii set-file-contents | 
					
						
							| 
									
										
										
										
											2011-10-03 00:58:58 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  | ! Callback error from initial thread | 
					
						
							|  |  |  | [ t ] [  run-vm-with-script "\"Error!\"" swap member? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ ] [ | 
					
						
							|  |  |  |     """USING: alien alien.c-types alien.syntax kernel threads ;
 | 
					
						
							| 
									
										
										
										
											2011-10-03 00:58:58 -04:00
										 |  |  |     IN: scratchpad | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     : callback-death ( -- callback )
 | 
					
						
							|  |  |  |         void { } cdecl [ "Error!" throw ] alien-callback ;
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     : callback-invoke ( callback -- )
 | 
					
						
							|  |  |  |         void { } cdecl alien-indirect ;
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     [ callback-death callback-invoke ] in-thread | 
					
						
							|  |  |  |     stop""" | 
					
						
							| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  |     callback-error-script ascii set-file-contents | 
					
						
							| 
									
										
										
										
											2011-10-03 00:58:58 -04:00
										 |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2011-10-11 00:25:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Callback error from another thread | 
					
						
							|  |  |  | [ t ] [ run-vm-with-script "\"Error!\"" swap member? ] unit-test |