blob: 5824016c6ccacafef859e2ff94953c7bc2f798e9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
load(libdir + "asserts.js");
var g = newGlobal({newCompartment: true});
var dbg = Debugger(g);
g.eval(`
function* f() {
e;
}
`);
// To continue testing after uncaught exception, remember the exception and
// return normal completion.
var currentFrame;
var uncaughtException;
dbg.uncaughtExceptionHook = function(e) {
uncaughtException = e;
return {
return: "uncaught"
};
};
function testUncaughtException() {
uncaughtException = undefined;
var obj = g.eval(`f().next()`);
assertEq(obj.done, true);
assertEq(obj.value, 'uncaught');
assertEq(uncaughtException instanceof TypeError, true);
}
// Just continue
dbg.onExceptionUnwind = function(frame) {
return undefined;
};
assertThrowsInstanceOf(() => g.eval(`f().next();`), g.ReferenceError);
// Forced early return
dbg.onExceptionUnwind = function(frame) {
currentFrame = frame;
return {
return: "foo"
};
};
var obj = g.eval(`f().next()`);
assertEq(obj.done, true);
assertEq(obj.value, "foo");
// Bad resumption value
dbg.onExceptionUnwind = function(frame) {
currentFrame = frame;
return {declaim: "gadzooks"};
};
testUncaughtException();
|