Fix newline normalization

credit: @Validark
This commit is contained in:
Jarred Sumner
2022-11-07 21:41:07 -08:00
parent 9d167deb10
commit bb8c803bdf
2 changed files with 13 additions and 5 deletions

View File

@@ -280,7 +280,8 @@ fn NewLexer_(
// include a <CR> or <CR><LF> sequence.
// Convert '\r\n' into '\n'
iter.i += @as(u32, @boolToInt(iter.i < text.len and text[iter.i] == '\n'));
const next_i: usize = iter.i + 1;
iter.i += @as(u32, @boolToInt(next_i < text.len and text[next_i] == '\n'));
// Convert '\r' into '\n'
buf.append('\n') catch unreachable;
@@ -546,11 +547,11 @@ fn NewLexer_(
try lexer.syntaxError();
}
// Make sure Windows CRLF counts as a single newline
const next_i: usize = iter.i + 1;
iter.i += @as(u32, @boolToInt(next_i < text.len and text[next_i] == '\n'));
// Ignore line continuations. A line continuation is not an escaped newline.
if (iter.i < text.len and text[iter.i + 1] == '\n') {
// Make sure Windows CRLF counts as a single newline
iter.i += 1;
}
continue;
},
'\n', 0x2028, 0x2029 => {

View File

@@ -65,6 +65,13 @@ describe("Bun.Transpiler", () => {
},
};
it("normalizes \\r\\n", () => {
ts.expectPrinted_(
"console.log(`\r\n\r\n\r\n`)",
"console.log(`\n\n\n`);\n"
);
});
describe("TypeScript", () => {
it("import Foo = Baz.Bar", () => {
ts.expectPrinted_(