diff --git a/.depend b/.depend index cbafae95..c2098132 100644 --- a/.depend +++ b/.depend @@ -13,7 +13,8 @@ src/res_comments_table.cmx : src/res_parsetree_viewer.cmx src/res_doc.cmx \ src/res_comment.cmx src/res_core.cmx : src/res_token.cmx src/res_scanner.cmx src/res_printer.cmx \ src/res_parser.cmx src/res_js_ffi.cmx src/res_grammar.cmx src/res_doc.cmx \ - src/res_diagnostics.cmx src/res_comments_table.cmx src/res_core.cmi + src/res_diagnostics.cmx src/res_comments_table.cmx \ + src/res_character_codes.cmx src/res_core.cmi src/res_core.cmi : src/res_parser.cmi src/res_diagnostics.cmx : src/res_token.cmx src/res_grammar.cmx \ src/res_diagnostics_printing_utils.cmx src/res_diagnostics.cmi diff --git a/src/res_character_codes.ml b/src/res_character_codes.ml index 5de247c5..aec713a7 100644 --- a/src/res_character_codes.ml +++ b/src/res_character_codes.ml @@ -157,4 +157,4 @@ let digitValue ch = else if Lower.a <= (lower ch) && (lower ch) <= Lower.f then (lower ch) - Lower.a + 10 else - 16 (* larger than any legal value *) \ No newline at end of file + 16 (* larger than any legal value *) diff --git a/src/res_core.ml b/src/res_core.ml index eac92f8a..ed08600a 100644 --- a/src/res_core.ml +++ b/src/res_core.ml @@ -838,6 +838,8 @@ let parseTemplateStringLiteral s = | '`' as c -> Buffer.add_char b c; loop (i + 2) + | c when Res_character_codes.isLineBreak (Char.code c) -> + loop (i + 2) | c -> Buffer.add_char b '\\'; Buffer.add_char b c; diff --git a/src/res_scanner.ml b/src/res_scanner.ml index e58be9c5..fd1359a8 100644 --- a/src/res_scanner.ml +++ b/src/res_scanner.ml @@ -432,6 +432,7 @@ let scanTemplateLiteralToken scanner = if scanner.ch == CharacterCodes.backtick || scanner.ch == CharacterCodes.backslash || scanner.ch == CharacterCodes.dollar + || CharacterCodes.isLineBreak scanner.ch then next scanner; scan() ) else ( diff --git a/tests/conversion/reason/__snapshots__/render.spec.js.snap b/tests/conversion/reason/__snapshots__/render.spec.js.snap index 977e58e1..2cf44bf5 100644 --- a/tests/conversion/reason/__snapshots__/render.spec.js.snap +++ b/tests/conversion/reason/__snapshots__/render.spec.js.snap @@ -1276,6 +1276,9 @@ let x = 1 exports[`string.re 1`] = ` "%%bs.raw(\\"define(x.y, 'userAgent', {value: 'USER_AGENT_STRING'})\\") + +let x = \`This is a long string with a slash and line break \\\\\\\\ +carriage return\` " `; diff --git a/tests/conversion/reason/string.re b/tests/conversion/reason/string.re index de651235..63bb3b60 100644 --- a/tests/conversion/reason/string.re +++ b/tests/conversion/reason/string.re @@ -1,2 +1,5 @@ %bs.raw "define(x.y, 'userAgent', {value: 'USER_AGENT_STRING'})"; + +let x = {js|This is a long string with a slash and line break \ +carriage return|js}