Debugger-findObjects-classObj-userClass.js (1450B)
1 const g = newGlobal({ newCompartment: true }); 2 3 g.eval(` 4 var c1 = class C1 { 5 }; 6 var c2 = class C2 extends c1 { 7 }; 8 9 var x1 = new c1(); 10 var x2 = new c2(); 11 `); 12 13 const dbg = new Debugger(); 14 const gDO = dbg.addDebuggee(g); 15 16 const x1DO = gDO.makeDebuggeeValue(g.x1); 17 const x2DO = gDO.makeDebuggeeValue(g.x2); 18 19 // The direct ctor/proto should match. 20 const c1DO = gDO.makeDebuggeeValue(g.c1); 21 assertEq(dbg.findObjects({ class: c1DO }).includes(x1DO), true); 22 const c1ProtoDO = gDO.makeDebuggeeValue(g.c1.prototype); 23 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(x1DO), true); 24 25 const c2DO = gDO.makeDebuggeeValue(g.c2); 26 assertEq(dbg.findObjects({ class: c2DO }).includes(x2DO), true); 27 const c2ProtoDO = gDO.makeDebuggeeValue(g.c2.prototype); 28 assertEq(dbg.findObjects({ class: c2ProtoDO }).includes(x2DO), true); 29 30 // The super ctor/proto should match. 31 assertEq(dbg.findObjects({ class: c1DO }).includes(x2DO), true); 32 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(x2DO), true); 33 34 // Subclass's prototype is instance of superclass's prototype. 35 assertEq(dbg.findObjects({ class: c1DO }).includes(c2ProtoDO), true); 36 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(c2ProtoDO), true); 37 38 // Subclass's ctor is instance of superclass's ctor. 39 assertEq(dbg.findObjects({ class: c1DO }).includes(c2DO), true); 40 41 // Subclass's ctor has no relation wtih superclass's prototype. 42 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(c2DO), false);