From 379be365d6cf53aeddfd825d7a0fb2d8b2c2ac33 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Sat, 19 Dec 2015 22:12:11 -0500 Subject: [PATCH] babel-generator: keep double quotes in StringLiteral for JSX parent (fixes T6859) --- packages/babel-generator/src/generators/types.js | 8 ++++---- .../test/fixtures/auto-string/jsx/actual.js | 9 +++++++++ .../test/fixtures/auto-string/jsx/expected.js | 9 +++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/auto-string/jsx/actual.js create mode 100644 packages/babel-generator/test/fixtures/auto-string/jsx/expected.js diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index 873154968a..3c5954c5fe 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -115,11 +115,11 @@ export function NumericLiteral(node: Object) { this.push(node.value + ""); } -export function StringLiteral(node: Object) { - this.push(this._stringLiteral(node.value)); +export function StringLiteral(node: Object, parent: Object) { + this.push(this._stringLiteral(node.value, parent)); } -export function _stringLiteral(val: string): string { +export function _stringLiteral(val: string, parent: Object): string { val = JSON.stringify(val); // escape illegal js but valid json unicode characters @@ -127,7 +127,7 @@ export function _stringLiteral(val: string): string { return "\\u" + ("0000" + c.charCodeAt(0).toString(16)).slice(-4); }); - if (this.format.quotes === "single") { + if (this.format.quotes === "single" && !t.isJSX(parent)) { // remove double quotes val = val.slice(1, -1); diff --git a/packages/babel-generator/test/fixtures/auto-string/jsx/actual.js b/packages/babel-generator/test/fixtures/auto-string/jsx/actual.js new file mode 100644 index 0000000000..1d2c1244a5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/auto-string/jsx/actual.js @@ -0,0 +1,9 @@ +var single = 'quotes'; +var outnumber = 'double'; +var moreSingleQuotesThanDouble = '!'; + +React.createClass({ + render() { + return ; + } +}); diff --git a/packages/babel-generator/test/fixtures/auto-string/jsx/expected.js b/packages/babel-generator/test/fixtures/auto-string/jsx/expected.js new file mode 100644 index 0000000000..1d2c1244a5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/auto-string/jsx/expected.js @@ -0,0 +1,9 @@ +var single = 'quotes'; +var outnumber = 'double'; +var moreSingleQuotesThanDouble = '!'; + +React.createClass({ + render() { + return ; + } +});