/*=== closure throw 123 closure throw 123 closure throw ===*/ /* This was broken at an early point. Catch binding variable would be mapped * to a certain register for the duration of the catch clause. A closure * created from the catch clause would work incorrectly once the original * invocation exited the catch clause. */ function f() { var e = 123; var func; try { throw 'throw'; } catch (e) { func = function() { print('closure', e); } func(); } print(e); func(); print(e); return func; } f()();