cptn-finally-skip-catch.js (1504B)
1 // Copyright (C) 2016 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 es6id: 13.15.8 5 description: > 6 Completion value from `finally` clause of a try..catch..finally statement 7 (when `catch` block is not executed) 8 info: | 9 TryStatement : try Block Catch Finally 10 11 1. Let B be the result of evaluating Block. 12 2. If B.[[type]] is throw, then 13 [...] 14 3. Else B.[[type]] is not throw, let C be B. 15 4. Let F be the result of evaluating Finally. 16 5. If F.[[type]] is normal, let F be C. 17 6. If F.[[type]] is return, or F.[[type]] is throw, return Completion(F). 18 7. If F.[[value]] is not empty, return NormalCompletion(F.[[value]]). 19 8. Return Completion{[[type]]: F.[[type]], [[value]]: undefined, 20 [[target]]: F.[[target]]}. 21 ---*/ 22 23 assert.sameValue(eval('1; try { } catch (err) { } finally { }'), undefined); 24 assert.sameValue(eval('2; try { } catch (err) { 3; } finally { }'), undefined); 25 assert.sameValue(eval('4; try { } catch (err) { } finally { 5; }'), undefined); 26 assert.sameValue(eval('6; try { } catch (err) { 7; } finally { 8; }'), undefined); 27 assert.sameValue(eval('9; try { 10; } catch (err) { } finally { }'), 10); 28 assert.sameValue(eval('11; try { 12; } catch (err) { 13; } finally { }'), 12); 29 assert.sameValue(eval('14; try { 15; } catch (err) { } finally { 16; }'), 15); 30 assert.sameValue(eval('17; try { 18; } catch (err) { 19; } finally { 20; }'), 18); 31 32 reportCompare(0, 0);