blob: f36f45a0d7535ca8af30c951ea82a92f5806b8ff [file] [log] [blame]
description('This test exercises the source URL and line number that is embedded in JavaScript exceptions, which is displayed in places like the JavaScript console.');
function exceptionInFunction()
{
throw Exception();
}
var e = undefined;
try {
// Raises an exception that gets picked up by KJS_CHECKEXCEPTION
document.documentElement.innerHTML(foo);
} catch (exception) {
e = exception;
}
shouldBe("typeof e.sourceURL", '"string"');
shouldBe("e.line", '12');
e = undefined;
try {
// Raises an exception that gets picked up by KJS_CHECKEXCEPTIONVALUE
document.documentElement.appendChild('').prefix = '';
} catch (exception) {
e = exception;
}
shouldBe("typeof e.sourceURL", '"string"');
shouldBe("e.line", '22');
e = undefined;
try {
// Raises an exception that gets picked up by KJS_CHECKEXCEPTIONREFERENCE
document.documentElement.appendChild('').innerHTML = '';
} catch (exception) {
e = exception;
}
shouldBe("typeof e.sourceURL", '"string"');
shouldBe("e.line", '32');
e = undefined;
try {
// Raises an exception that gets picked up by KJS_CHECKEXCEPTIONLIST
document.getElementById(1());
} catch (exception) {
e = exception;
}
shouldBe("typeof e.sourceURL", '"string"');
shouldBe("e.line", '42');
e = undefined;
// Raises an exception inside a function to check that its line number
// isn't overwritten in the assignment node.
try {
var a = exceptionInFunction();
} catch (exception) {
e = exception;
}
shouldBe("typeof e.sourceURL", '"string"');
shouldBe("e.line", '5');
realEval = eval;
delete eval;
(function(){
try {
eval("");
} catch(exception) {
e = exception;
}
})();
eval = realEval;
shouldBe("typeof e.sourceURL", '"string"');
shouldBe("e.line", '64');
var successfullyParsed = true;