From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- ...syntax-parsed-arrow-then-sourcemap-directive.js | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 js/src/tests/non262/syntax/syntax-parsed-arrow-then-sourcemap-directive.js (limited to 'js/src/tests/non262/syntax/syntax-parsed-arrow-then-sourcemap-directive.js') diff --git a/js/src/tests/non262/syntax/syntax-parsed-arrow-then-sourcemap-directive.js b/js/src/tests/non262/syntax/syntax-parsed-arrow-then-sourcemap-directive.js new file mode 100644 index 0000000000..71e2b2bdaf --- /dev/null +++ b/js/src/tests/non262/syntax/syntax-parsed-arrow-then-sourcemap-directive.js @@ -0,0 +1,63 @@ +// |reftest| skip-if(!xulRuntime.shell) -- needs Debugger +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 1596706; +var summary = + "Properly apply a source map directive that's only tokenized by a syntax " + + "parser (because the directive comment appears immediately after an arrow " + + "function with expression body)"; + +print(BUGNUMBER + ": " + summary); + +/************** + * BEGIN TEST * + **************/ + +var g = newGlobal({newCompartment: true}); +var dbg = new Debugger(g); + +var script; +dbg.onDebuggerStatement = function (frame) +{ + script = frame.script; +}; + +function checkSourceMapFor(arrowFunc, sourceMap) +{ + g.evaluate(`${arrowFunc} +//# sourceMappingURL=${sourceMap} +debugger;`); + + assertEq(script instanceof Debugger.Script, true, + "expected a Debugger.Script for " + arrowFunc); + + var source = script.source; + assertEq(source instanceof Debugger.Source, true, + "expected a Debugger.Source for " + arrowFunc); + + assertEq(source.sourceMapURL, sourceMap, + "unexpected source map for " + arrowFunc); +} + +// block followed by semicolon +checkSourceMapFor("x=>{};", "http://example.com/foo.js"); + +// block not followed by semicolon +checkSourceMapFor("x=>{}", "http://example.com/bar.js"); + +// expr followed by semicolon +checkSourceMapFor("x=>y;", "http://example.com/baz.js"); + +// expr not followed by semicolon +checkSourceMapFor("x=>y", "http://example.com/bar.js"); + +/******************************************************************************/ + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("Tests complete"); -- cgit v1.2.3