WALA/com.ibm.wala.cast.js.test.data/examples-src/tests/try.js

106 lines
1.4 KiB
JavaScript
Executable File

function targetOne( x ) {
return x;
}
function targetTwo( x ) {
throw x;
}
function tryCatch( x, targetOne, targetTwo ) {
try {
if (x.one < 7)
targetOne( x );
else
targetTwo( x );
} catch (e) {
e.two();
}
}
function tryFinally( x, targetOne, targetTwo ) {
try {
if (x.one < 7)
return targetOne( x );
else
targetTwo( x );
} finally {
x.two();
}
x.three();
}
function tryFinallyLoop( x, targetTwo ) {
while (x.one < 7) {
try {
if (x.one < 3)
break;
else
targetTwo( x );
} finally {
x.two();
}
}
}
function tryCatchFinally( x, targetOne, targetTwo ) {
try {
if (x.one < 7)
targetOne( x );
else
targetTwo( x );
} catch (e) {
e.two();
} finally {
x.three();
}
}
function tryCatchTwice( x, targetOne, targetTwo ) {
try {
if (x.one < 7)
targetOne( x );
else
targetTwo( x );
} catch (e) {
e.two();
}
try {
if (x.one < 7)
targetOne( x );
else
targetTwo( x );
} catch (e) {
e.three();
}
return e;
}
o = {
one: -12,
two: function two () {
return this;
},
three: function three () {
return 8;
}
};
tryCatch(o, targetOne, targetTwo);
tryFinally(o, targetOne, targetTwo);
tryFinallyLoop(o, targetTwo);
tryCatchFinally(o, targetOne, targetTwo);
(function testRet() {
var e = tryCatchTwice(o, targetOne, targetTwo);
e.two();
e.three();
})();