mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 22:40:28 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
203 lines
5.0 KiB
JavaScript
203 lines
5.0 KiB
JavaScript
"use strict";
|
|
|
|
function truth() {
|
|
return true;
|
|
}
|
|
noInline(truth);
|
|
|
|
function assert(cond) {
|
|
if (!cond)
|
|
throw new Error("broke assertion");
|
|
}
|
|
noInline(assert);
|
|
|
|
const NUM_LOOPS = 100;
|
|
|
|
;(function () {
|
|
|
|
function foo() {
|
|
let x = 20;
|
|
let y = "y";
|
|
try {
|
|
assert(x === 20);
|
|
assert(y === "y");
|
|
throw "error";
|
|
} catch(e) {
|
|
assert(x === 20);
|
|
} finally {
|
|
assert(x === 20);
|
|
assert(y === "y");
|
|
}
|
|
|
|
for (let i = 0; i < 1; i++) {
|
|
let numFinally = 0;
|
|
try {
|
|
let a = 40;
|
|
let capA = function() { return a; }
|
|
assert(capA() === 40);
|
|
try {
|
|
let b = 41;
|
|
let capB = function() { return b; }
|
|
assert(capB() === 41);
|
|
assert(capA() === 40);
|
|
try {
|
|
return 20;
|
|
} catch(e){
|
|
} finally {
|
|
let c = 42;
|
|
let capC = function() { return c; }
|
|
assert(capC() === 42);
|
|
assert(capB() === 41);
|
|
assert(capA() === 40);
|
|
if (i === 0) {
|
|
numFinally++;
|
|
}
|
|
return 22;
|
|
}
|
|
} catch(e) {
|
|
} finally {
|
|
if (i === 0) {
|
|
numFinally++;
|
|
}
|
|
return 23;
|
|
}
|
|
} catch(e) {
|
|
} finally {
|
|
if (i === 0) {
|
|
numFinally++;
|
|
}
|
|
assert(numFinally === 3);
|
|
return 24;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < NUM_LOOPS; i++) {
|
|
assert(foo() === 24);
|
|
}
|
|
|
|
})();
|
|
|
|
|
|
;(function () {
|
|
function foo() {
|
|
for (let i = 0; i < 1; i++) {
|
|
let numFinally = 0;
|
|
let numErrors = 0;
|
|
try {
|
|
let a = 40;
|
|
let capA = function() { return a; }
|
|
assert(capA() === 40);
|
|
try {
|
|
let b = 41;
|
|
let capB = function() { return b; }
|
|
assert(capB() === 41);
|
|
assert(capA() === 40);
|
|
try {
|
|
throw "e";
|
|
} catch(e) {
|
|
assert(i === 0);
|
|
assert(capB() === 41);
|
|
assert(capA() === 40);
|
|
numErrors++;
|
|
throw e;
|
|
} finally {
|
|
let c = 42;
|
|
let capC = function() { return c; }
|
|
let local = "local";
|
|
assert(local === "local");
|
|
assert(capC() === 42);
|
|
assert(capB() === 41);
|
|
assert(capA() === 40);
|
|
if (i === 0) {
|
|
numFinally++;
|
|
}
|
|
}
|
|
} catch(e) {
|
|
assert(i === 0);
|
|
assert(capA() === 40);
|
|
numErrors++;
|
|
let local = "local";
|
|
assert(local === "local");
|
|
} finally {
|
|
assert(capA() === 40);
|
|
if (i === 0) {
|
|
numFinally++;
|
|
}
|
|
let local = "local";
|
|
assert(local === "local");
|
|
return 23;
|
|
}
|
|
} catch(e) {
|
|
//assert(i === 0);
|
|
} finally {
|
|
if (i === 0) {
|
|
numFinally++;
|
|
}
|
|
|
|
assert(numFinally === 3);
|
|
assert(numErrors === 2);
|
|
return 24;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < NUM_LOOPS; i++) {
|
|
assert(foo() === 24);
|
|
}
|
|
|
|
})();
|
|
|
|
|
|
var d = 100;
|
|
;(function (){
|
|
function foo() {
|
|
assert(d === 100);
|
|
for (let i = 0; i < 1; i++) {
|
|
let numFinally = 0;
|
|
let numErrors = 0;
|
|
let c = 44;
|
|
assert(d === 100);
|
|
try {
|
|
let d = 45;
|
|
if (truth()) {
|
|
let a = 20;
|
|
let capA = function() { return a; }
|
|
assert(capA() === 20);
|
|
if (truth()) {
|
|
let b = 21;
|
|
let e = 48;
|
|
let capB = function() { return b; }
|
|
assert(capB() === 21);
|
|
assert(d === 45);
|
|
try {
|
|
throw "e";
|
|
} catch(e) {
|
|
assert(capA() === 20);
|
|
assert(a === 20);
|
|
numErrors++;
|
|
} finally {
|
|
assert(capA() === 20);
|
|
assert(e === 48);
|
|
numFinally++;
|
|
return 30;
|
|
}
|
|
}
|
|
}
|
|
} finally {
|
|
assert(c === 44);
|
|
assert(d === 100);
|
|
numFinally++;
|
|
assert(numFinally === 2);
|
|
assert(numErrors === 1);
|
|
return 40;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < NUM_LOOPS; i++) {
|
|
assert(foo() === 40);
|
|
}
|
|
|
|
})();
|