michael@0: // |jit-test| michael@0: michael@0: // If an exception unwind hook performs a forced return, and this calls an michael@0: // onPop handler that throws, the exception should not be handled in the michael@0: // current frame but propagated to the caller. michael@0: var g = newGlobal(); michael@0: var dbg = new Debugger(g); michael@0: michael@0: g.eval('function f() { try { var y; throw 123; } catch(e) { assertEq(0, 1); } }'); michael@0: michael@0: dbg.onExceptionUnwind = function(frame) { michael@0: frame.onPop = function() { michael@0: return {throw: 321}; michael@0: } michael@0: michael@0: return {return: 11}; michael@0: }; michael@0: michael@0: try { michael@0: g.f(); michael@0: assertEq(0, 1); michael@0: } catch(e) { michael@0: assertEq(e.toString().contains("321"), true); michael@0: }