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 --- .../tests/fields/field-initializer-position.js | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 js/src/jit-test/tests/fields/field-initializer-position.js (limited to 'js/src/jit-test/tests/fields/field-initializer-position.js') diff --git a/js/src/jit-test/tests/fields/field-initializer-position.js b/js/src/jit-test/tests/fields/field-initializer-position.js new file mode 100644 index 0000000000..7944642f28 --- /dev/null +++ b/js/src/jit-test/tests/fields/field-initializer-position.js @@ -0,0 +1,52 @@ +// Test class field initializers have reasonable lineno/column values + +gczeal(0); + +// Use the Debugger API to introspect the line / column. +let d = new Debugger(); +let g = newGlobal({newCompartment: true}) +let gw = d.addDebuggee(g); + +let source = ` + let A = "A"; + let B = "B"; + + class C { + // START----v + 'field_str'; + 'field_str_with_init' = 1; + [A]; + [B] = 2; + static x; + static y = 3; + static [A + "static"]; + static [B + "static"] = 4; + // END + } +`; + +let NumInitializers = 8; + +// Compute (1-based) line number of 'START' and 'END' markers. +let START = source.split('\n').findIndex(x => x.includes("START")) + 1; +let END = source.split('\n').findIndex(x => x.includes("END")) + 1; +assertEq(END - START - 1, NumInitializers); + +// Use debugger to locate internal field-initializer scripts. +g.evaluate(source); +let scripts = d.findScripts() + .filter(script => (script.startLine >= START && + script.startLine <= END)); +scripts.sort((x, y) => (x.sourceStart - y.sourceStart)) + +for (var i = 0; i < NumInitializers; ++i) { + let script = scripts[i]; + let lineText = source.split('\n')[START + i]; + + // Check the initializer lambda has expected line/column + assertEq(script.startLine, START + 1 + i); + assertEq(script.startColumn, 21); + + // Check that source length matches expectations. + assertEq(script.startColumn + script.sourceLength + ';'.length, lineText.length + 1); +} -- cgit v1.2.3