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 ; + } +});