lineNumber.js (1932B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/licenses/publicdomain/ */ 3 4 var BUGNUMBER = 1253847; 5 var summary = 'Line numbers should be updated correctly when a template literal contains CRLF sequences.'; 6 7 print(BUGNUMBER + ": " + summary); 8 9 // lineNumber after template literal. 10 var base, x, lineno; 11 eval([ 12 "base = new Error().lineNumber;", 13 "x = `", 14 "`;", 15 "lineno = new Error().lineNumber;", 16 ].join("\r\n")); 17 assertEq(lineno, base + 3); 18 19 eval([ 20 "base = new Error().lineNumber;", 21 "x = `", 22 "", 23 "`;", 24 "lineno = new Error().lineNumber;", 25 ].join("\r\n")); 26 assertEq(lineno, base + 4); 27 28 eval([ 29 "base = new Error().lineNumber;", 30 "x = `a", 31 "b`;", 32 "lineno = new Error().lineNumber;", 33 ].join("\r\n")); 34 assertEq(lineno, base + 3); 35 36 // lineNumber inside template literal 37 eval([ 38 "base = new Error().lineNumber;", 39 "x = `${new Error().lineNumber}", 40 "${new Error().lineNumber}", 41 "${new Error().lineNumber}`;", 42 "lineno = new Error().lineNumber;", 43 ].join("\r\n")); 44 assertEq(lineno, base + 4); 45 assertEq(x, (base + 1) + '\n' + (base + 2) + '\n' + (base + 3)); 46 47 eval([ 48 "var base = new Error().lineNumber;", 49 "var x = `", 50 "${new Error().lineNumber}", 51 "${new Error().lineNumber}", 52 "${new Error().lineNumber}", 53 "`;", 54 "var lineno = new Error().lineNumber;", 55 ].join("\r\n")); 56 assertEq(lineno, base + 6); 57 assertEq(x, '\n' + (base + 2) + '\n' + (base + 3) + '\n' + (base + 4) + '\n'); 58 59 // When CR, LF, and CRLF are mixed. 60 eval([ 61 "var base = new Error().lineNumber;", "\n", 62 "var x = `${new Error().lineNumber}", "\n", 63 "${new Error().lineNumber}", "\r\n", 64 "${new Error().lineNumber}", "\r", 65 "${new Error().lineNumber}`;", "\n", 66 "var lineno = new Error().lineNumber;", 67 ].join("")); 68 assertEq(lineno, base + 5); 69 assertEq(x, (base + 1) + '\n' + (base + 2) + '\n' + (base + 3) + '\n' + (base + 4)); 70 71 if (typeof reportCompare === "function") 72 reportCompare(true, true);