/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/ */
var BUGNUMBER = 1253847;
var summary =
'Line numbers should be updated correctly when a template literal contains CRLF sequences.' ;
print(BUGNUMBER +
": " + summary);
// lineNumber after template literal.
var base, x, lineno;
eval([
"base = new Error().lineNumber;" ,
"x = `" ,
"`;" ,
"lineno = new Error().lineNumber;" ,
].join(
"\r\n" ));
assertEq(lineno, base + 3);
eval([
"base = new Error().lineNumber;" ,
"x = `" ,
"" ,
"`;" ,
"lineno = new Error().lineNumber;" ,
].join(
"\r\n" ));
assertEq(lineno, base + 4);
eval([
"base = new Error().lineNumber;" ,
"x = `a" ,
"b`;" ,
"lineno = new Error().lineNumber;" ,
].join(
"\r\n" ));
assertEq(lineno, base + 3);
// lineNumber inside template literal
eval([
"base = new Error().lineNumber;" ,
"x = `${new Error().lineNumber}" ,
"${new Error().lineNumber}" ,
"${new Error().lineNumber}`;" ,
"lineno = new Error().lineNumber;" ,
].join(
"\r\n" ));
assertEq(lineno, base + 4);
assertEq(x, (base + 1) +
'\n' + (base + 2) +
'\n' + (base + 3));
eval([
"var base = new Error().lineNumber;" ,
"var x = `" ,
"${new Error().lineNumber}" ,
"${new Error().lineNumber}" ,
"${new Error().lineNumber}" ,
"`;" ,
"var lineno = new Error().lineNumber;" ,
].join(
"\r\n" ));
assertEq(lineno, base + 6);
assertEq(x,
'\n' + (base + 2) +
'\n' + (base + 3) +
'\n' + (base + 4) +
'\n' );
// When CR, LF, and CRLF are mixed.
eval([
"var base = new Error().lineNumber;" ,
"\n" ,
"var x = `${new Error().lineNumber}" ,
"\n" ,
"${new Error().lineNumber}" ,
"\r\n" ,
"${new Error().lineNumber}" ,
"\r" ,
"${new Error().lineNumber}`;" ,
"\n" ,
"var lineno = new Error().lineNumber;" ,
].join(
"" ));
assertEq(lineno, base + 5);
assertEq(x, (base + 1) +
'\n' + (base + 2) +
'\n' + (base + 3) +
'\n' + (base + 4));
if (
typeof reportCompare ===
"function" )
reportCompare(
true ,
true );
Messung V0.5 C=71 H=100 G=86
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland