// |jit-test| skip-if: typeof withSourceHook !== 'function'
// Check that withSourceHook passes URLs, propagates exceptions, and
// properly restores the original source hooks.
load(libdir + 'asserts.js' );
var log = '' ;
// Establish an outermost source hook.
withSourceHook(function (url) {
log += 'o' ;
assertEq(url, 'outer' );
return '(function outer() { 3; })' ;
}, function () {
log += 'O' ;
// Verify that withSourceHook propagates exceptions thrown by source hooks.
assertThrowsValue(function () {
// Establish a source hook that throws.
withSourceHook(function (url) {
log += 'm' ;
assertEq(url, 'middle' );
throw 'borborygmus' ; // middle
}, function () {
log += 'M' ;
// Establish an innermost source hook that does not throw,
// and verify that it is in force.
assertEq(withSourceHook(function (url) {
log += 'i' ;
assertEq(url, 'inner' );
return '(function inner() { 1; })' ;
}, function () {
log += 'I' ;
return evaluate('(function inner() { 2; })' ,
{ fileName: 'inner' , sourceIsLazy: true })
.toString();
}),
'function inner() { 1; }' );
// Verify that the source hook that throws has been reinstated.
evaluate('(function middle() { })' ,
{ fileName: 'middle' , sourceIsLazy: true })
.toString();
});
}, 'borborygmus' );
// Verify that the outermost source hook has been restored.
assertEq(evaluate('(function outer() { 4; })' ,
{ fileName: 'outer' , sourceIsLazy: true })
.toString(),
'function outer() { 3; }' );
});
assertEq(log, 'OMIimo' );
Messung V0.5 in Prozent C=94 H=87 G=90
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-04-25)
¤
*© Formatika GbR, Deutschland