| 
									
										
										
										
											2020-09-12 10:22:36 +01:00
										 |  |  | test("Issue #3437, exception thrown in catch {} block", () => { | 
					
						
							| 
									
										
										
										
											2020-09-11 22:47:43 +01:00
										 |  |  |     var tryHasBeenExecuted = false; | 
					
						
							|  |  |  |     var catchHasBeenExecuted = false; | 
					
						
							|  |  |  |     var finallyHasBeenExecuted = false; | 
					
						
							|  |  |  |     expect(() => { | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |             tryHasBeenExecuted = true; | 
					
						
							|  |  |  |             foo(); | 
					
						
							|  |  |  |             // execution must not reach this step
 | 
					
						
							|  |  |  |             expect().fail(); | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |             catchHasBeenExecuted = true; | 
					
						
							|  |  |  |             bar(); | 
					
						
							|  |  |  |             // ...also not this step
 | 
					
						
							|  |  |  |             expect().fail(); | 
					
						
							|  |  |  |         } finally { | 
					
						
							|  |  |  |             finallyHasBeenExecuted = true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         // ...or this step
 | 
					
						
							|  |  |  |         expect().fail(); | 
					
						
							|  |  |  |     }).toThrow(ReferenceError, "'bar' is not defined"); | 
					
						
							|  |  |  |     expect(tryHasBeenExecuted).toBeTrue(); | 
					
						
							|  |  |  |     expect(catchHasBeenExecuted).toBeTrue(); | 
					
						
							|  |  |  |     expect(finallyHasBeenExecuted).toBeTrue(); | 
					
						
							|  |  |  | }); |