// Test that the onNativeCall hook cannot return a primitive value.
var g = newGlobal({newCompartment: true}); var dbg = Debugger(g); var gdbg = dbg.addDebuggee(g);
// Returning the callee accidentally is a common mistake when implementing C++ // methods, but the debugger should not trip any checks if it does this on // purpose.
dbg.onNativeCall = (callee, reason) => { return {return: callee};
};
v = gdbg.executeInGlobal("new Object")
assertEq(v.return, gdbg.makeDebuggeeValue(g.Object));
// Returning a primitive should cause the hook to throw.
dbg.onNativeCall = (callee, reason) => { return {return: "primitive"};
};
v = gdbg.executeInGlobal("new Object")
assertEq(v.throw.proto, gdbg.makeDebuggeeValue(g.Error.prototype))
// A no-op hook shouldn't break any checks.
dbg.onNativeCall = (callee, reason) => { };
v = gdbg.executeInGlobal("new Object")
assertEq("return" in v, true);
Messung V0.5
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.