From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- js/src/jit-test/tests/debug/Script-startColumn.js | 101 ++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 js/src/jit-test/tests/debug/Script-startColumn.js (limited to 'js/src/jit-test/tests/debug/Script-startColumn.js') diff --git a/js/src/jit-test/tests/debug/Script-startColumn.js b/js/src/jit-test/tests/debug/Script-startColumn.js new file mode 100644 index 0000000000..d61e9d0d29 --- /dev/null +++ b/js/src/jit-test/tests/debug/Script-startColumn.js @@ -0,0 +1,101 @@ +// Script.prototype.startColumn returns the correct column for all scripts. + +const g = newGlobal({newCompartment: true, useWindowProxy: true}); +const dbg = Debugger(g); +const gw = dbg.addDebuggee(g); + +function test(f, expected) { + const fw = gw.makeDebuggeeValue(f); + assertEq(fw.callable, true); + assertEq(fw.script.startColumn, expected); +} + +g.eval(` +function f1() { } +`); +test(g.f1, 12); + +g.eval(` +var f2 = function({ a, b, c }, d, e, ...more) { }; +`); +test(g.f2, 18); + +g.eval(` +var f3 = function *() { }; +`); +test(g.f3, 20); + +g.eval(` +var f4 = async function + () { }; +`); +test(g.f4, 3); + +g.eval(` +var f5 = (a, b) => a + b; +`); +test(g.f5, 10); + +g.eval(` +var f6 = a => a + 1; +`); +test(g.f6, 10); + +g.eval(` +var MyClass = class { + method() { } +}; +var myInstance = new MyClass(); +`); +test(g.myInstance.method, 11); +test(g.myInstance.constructor, 15); + +const g2 = newGlobal({newCompartment: true, useWindowProxy: true}); +const dbg2 = Debugger(g2); +const g2Wrapped = dbg2.addDebuggee(g2); +g2.evaluate(` +function f7() { } +`, { + forceFullParse: true, +}); +const f7w = g2Wrapped.makeDebuggeeValue(g2.f7); +assertEq(f7w.callable, true); +assertEq(f7w.script.startColumn, 12); + +g.eval(` +function f8() { + return function f8Inner() { } +} +`); +test(g.f8, 12); +test(g.f8(), 28); + +g.eval(` +var f9 = new Function(\"\"); +`); +test(g.f9, 1); + +let hit = 0; +let column; +dbg.onDebuggerStatement = function (frame) { + column = frame.script.startColumn; + hit += 1; +}; + +g.eval(` debugger;`); +assertEq(column, 1); +assertEq(hit, 1); + +const location = { fileName: "column.js", lineNumber: 1, columnNumber: 1 }; +hit = 0; +g.evaluate(` debugger;`, location); +assertEq(column, 1); +assertEq(hit, 1); + +g.evaluate(`var f10 = function () { };`, location); +test(g.f10, 20); + +g.evaluate(` +var f11 = function () { }; +`, location); +test(g.f11, 20); -- cgit v1.2.3