if (signal_eof && !ch)
throw EX_EOF;
if (NEWLINE_CHARS[ch]) {
- S.newline_before = S.newline_before || !in_string;
- ++S.line;
S.col = 0;
- if (!in_string && ch == "\r" && peek() == "\n") {
- // treat a \r\n sequence as a single \n
- ++S.pos;
+ S.line++;
+ if (!in_string) S.newline_before = true;
+ if (ch == "\r" && peek() == "\n") {
+ // treat `\r\n` as `\n`
+ S.pos++;
ch = "\n";
}
} else {
- ++S.col;
+ S.col++;
}
return ch;
}
assert.strictEqual(result.code, code);
assert.strictEqual(result.map, '{"version":3,"sources":["0"],"names":["console","log"],"mappings":"AAAAA,QAAQC,IAAI","sourceRoot":"//foo.bar/"}');
});
+ it("Should produce same source map with DOS or UNIX line endings", function() {
+ var code = [
+ 'console.log("\\',
+ 'hello",',
+ '"world");',
+ ];
+ var dos = UglifyJS.minify(code.join("\r\n"), {
+ sourceMap: true,
+ });
+ if (dos.error) throw dos.error;
+ var unix = UglifyJS.minify(code.join("\n"), {
+ sourceMap: true,
+ });
+ if (unix.error) throw unix.error;
+ assert.strictEqual(dos.map, unix.map);
+ });
describe("inSourceMap", function() {
it("Should read the given string filename correctly when sourceMapIncludeSources is enabled", function() {