diff --git a/src/language-js/embed.js b/src/language-js/embed.js index 9d191f4f..d5bd8b6d 100644 --- a/src/language-js/embed.js +++ b/src/language-js/embed.js @@ -77,7 +77,7 @@ function embed(path, print, textToDoc /*, options */) { const templateElement = node.quasis[i]; const isFirst = i === 0; const isLast = i === numQuasis - 1; - const text = templateElement.value.raw; + const text = templateElement.value.cooked; const lines = text.split("\n"); const numLines = lines.length; const expressionDoc = expressionDocs[i]; @@ -107,13 +107,17 @@ function embed(path, print, textToDoc /*, options */) { doc = docUtils.stripTrailingHardline( textToDoc(text, { parser: "graphql" }) ); - } catch (_error) { + } catch (error) { + if (process.env.PRETTIER_DEBUG) { + throw error; + } // Bail if any part fails to parse. return null; } } if (doc) { + doc = escapeBackticks(doc); if (!isFirst && startsWithBlankLine) { parts.push(""); } diff --git a/tests/multiparser_js_graphql/__snapshots__/jsfmt.spec.js.snap b/tests/multiparser_js_graphql/__snapshots__/jsfmt.spec.js.snap index 580b80d4..5f637b59 100644 --- a/tests/multiparser_js_graphql/__snapshots__/jsfmt.spec.js.snap +++ b/tests/multiparser_js_graphql/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`backticks.js 1`] = ` +gql\` + "\\\`foo\\\` mutation payload." + type FooPayload { + bar: String + } +\` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +gql\` + "\\\`foo\\\` mutation payload." + type FooPayload { + bar: String + } +\`; + +`; + exports[`expressions.js 1`] = ` graphql(schema, \` query allPartsByManufacturerName($name: String!) { diff --git a/tests/multiparser_js_graphql/backticks.js b/tests/multiparser_js_graphql/backticks.js new file mode 100644 index 00000000..0ffaa37b --- /dev/null +++ b/tests/multiparser_js_graphql/backticks.js @@ -0,0 +1,6 @@ +gql` + "\`foo\` mutation payload." + type FooPayload { + bar: String + } +`