From 06cff60bc1eec13ff804af9f74b3b2b37b5490b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Thu, 13 Jun 2013 18:18:54 -0700 Subject: [PATCH] Sync latest JSX transform - all children passed as separate arguments This was a part of e1fe13d0cbb6063594a0b9dc712a8ee6006bb2e3 upstream. --- vendor/fbtransform/lib/transform.js | 8 +++++++- vendor/fbtransform/syntax.js | 7 ++++++- vendor/fbtransform/transforms/react.js | 15 ++------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/vendor/fbtransform/lib/transform.js b/vendor/fbtransform/lib/transform.js index 57902a0250..b7fd655465 100644 --- a/vendor/fbtransform/lib/transform.js +++ b/vendor/fbtransform/lib/transform.js @@ -91,7 +91,13 @@ function walker(traverse, object, path, state) { } function runPass(source, visitors, options) { - var ast = esprima.parse(source, { comment: true, loc: true, range: true }); + var ast; + try { + ast = esprima.parse(source, { comment: true, loc: true, range: true }); + } catch (e) { + e.message = 'Parse Error: ' + e.message; + throw e; + } var state = createState(source, options); state.g.originalProgramAST = ast; state.g.visitors = visitors; diff --git a/vendor/fbtransform/syntax.js b/vendor/fbtransform/syntax.js index 96d7af8c60..9b7a0080fe 100644 --- a/vendor/fbtransform/syntax.js +++ b/vendor/fbtransform/syntax.js @@ -54,7 +54,12 @@ function runCli(argv) { source += chunk; }); process.stdin.on('end', function () { - source = transformAll(source, options, excludes); + try { + source = transformAll(source, options, excludes); + } catch (e) { + console.error(e.stack); + process.exit(1); + } process.stdout.write(source.code); }); } diff --git a/vendor/fbtransform/transforms/react.js b/vendor/fbtransform/transforms/react.js index bd11a8a0f7..a9495213a5 100644 --- a/vendor/fbtransform/transforms/react.js +++ b/vendor/fbtransform/transforms/react.js @@ -136,14 +136,10 @@ function visitReactTag(traverse, object, path, state) { move(object.openingElement.range[1], state); } - // separate props and children arguments - append(', ', state); - // filter out whitespace if (childrenToRender.length > 0) { - if (childrenToRender.length > 1) { - append('[', state); - } + append(', ', state); + object.children.forEach(function(child) { if (child.type === Syntax.Literal && !child.value.match(/\S/)) { return; @@ -166,8 +162,6 @@ function visitReactTag(traverse, object, path, state) { catchup(child.range[1], state); }); - } else { - append('null', state); } if (object.selfClosing) { @@ -180,11 +174,6 @@ function visitReactTag(traverse, object, path, state) { move(object.closingElement.range[1], state); } - if (childrenToRender.length > 0) { - if (childrenToRender.length > 1) { - append(']', state); - } - } append(')', state); return false; }