diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-03-27 13:21:40 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-03-27 13:21:40 +0200 |
commit | e19749682050ff716fc9ff3bbc05ee3911570670 (patch) | |
tree | 4213a4e8efdaadea0409642702ec6c499f7b9ccc /js/src/tests/ecma_6/Statements/for-inof-finally.js | |
parent | 72721d1d032db2099593076bf96f274623af3c26 (diff) | |
parent | 70c8cf8db71880c1ab1f8fee4787a19316960dac (diff) | |
download | UXP-e19749682050ff716fc9ff3bbc05ee3911570670.tar UXP-e19749682050ff716fc9ff3bbc05ee3911570670.tar.gz UXP-e19749682050ff716fc9ff3bbc05ee3911570670.tar.lz UXP-e19749682050ff716fc9ff3bbc05ee3911570670.tar.xz UXP-e19749682050ff716fc9ff3bbc05ee3911570670.zip |
Merge remote-tracking branch 'janek/js_IteratorClose_1'
Diffstat (limited to 'js/src/tests/ecma_6/Statements/for-inof-finally.js')
-rw-r--r-- | js/src/tests/ecma_6/Statements/for-inof-finally.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/Statements/for-inof-finally.js b/js/src/tests/ecma_6/Statements/for-inof-finally.js new file mode 100644 index 000000000..e1f0c77e1 --- /dev/null +++ b/js/src/tests/ecma_6/Statements/for-inof-finally.js @@ -0,0 +1,78 @@ +var BUGNUMBER = 1332881; +var summary = + "Leaving for-in and try should handle stack value in correct order"; + +print(BUGNUMBER + ": " + summary); + +var called = 0; +function reset() { + called = 0; +} +var obj = { + [Symbol.iterator]() { + return { + next() { + return { value: 10, done: false }; + }, + return() { + called++; + return {}; + } + }; + } +}; + +var a = (function () { + for (var x in [0]) { + try {} finally { + return 11; + } + } +})(); +assertEq(a, 11); + +reset(); +var b = (function () { + for (var x of obj) { + try {} finally { + return 12; + } + } +})(); +assertEq(called, 1); +assertEq(b, 12); + +reset(); +var c = (function () { + for (var x in [0]) { + for (var y of obj) { + try {} finally { + return 13; + } + } + } +})(); +assertEq(called, 1); +assertEq(c, 13); + +reset(); +var d = (function () { + for (var x in [0]) { + for (var y of obj) { + try {} finally { + for (var z in [0]) { + for (var w of obj) { + try {} finally { + return 14; + } + } + } + } + } + } +})(); +assertEq(called, 2); +assertEq(d, 14); + +if (typeof reportCompare === "function") + reportCompare(true, true); |