The library for web and native user interfaces.
Sync latest JSX transform - all children passed as separate arguments
This was a part of e1fe13d0cbb6063594a0b9dc712a8ee6006bb2e3 upstream.
Paul O’Shannessy committed
Jun 13, 2013 at 18:18 UTC
06cff60bc1eec13ff804af9f74b3b2b37b5490b3
3 files changed
+15
-15
vendor/fbtransform/lib/transform.js
+7
-1
@@ -91,7 +91,13 @@ function walker(traverse, object, path, state) {
91
}
92
93
function runPass(source, visitors, options) {
94
- var ast = esprima.parse(source, { comment: true, loc: true, range: true });
94
+ var ast;
95
+ try {
96
+ ast = esprima.parse(source, { comment: true, loc: true, range: true });
97
+ } catch (e) {
98
+ e.message = 'Parse Error: ' + e.message;
99
+ throw e;
100
+ }
101
var state = createState(source, options);
102
state.g.originalProgramAST = ast;
103
state.g.visitors = visitors;
vendor/fbtransform/syntax.js
+6
-1
@@ -54,7 +54,12 @@ function runCli(argv) {
54
source += chunk;
55
});
56
process.stdin.on('end', function () {
57
- source = transformAll(source, options, excludes);
57
+ try {
58
+ source = transformAll(source, options, excludes);
59
+ } catch (e) {
60
+ console.error(e.stack);
61
+ process.exit(1);
62
+ }
63
process.stdout.write(source.code);
64
});
65
}
vendor/fbtransform/transforms/react.js
+2
-13
@@ -136,14 +136,10 @@ function visitReactTag(traverse, object, path, state) {
136
move(object.openingElement.range[1], state);
137
}
138
139
- // separate props and children arguments
140
- append(', ', state);
141
-
139
// filter out whitespace
140
if (childrenToRender.length > 0) {
144
- if (childrenToRender.length > 1) {
145
- append('[', state);
146
- }
141
+ append(', ', state);
142
+
143
object.children.forEach(function(child) {
144
if (child.type === Syntax.Literal && !child.value.match(/\S/)) {
145
return;
@@ -166,8 +162,6 @@ function visitReactTag(traverse, object, path, state) {
162
163
catchup(child.range[1], state);
164
});
169
- } else {
170
- append('null', state);
165
}
166
167
if (object.selfClosing) {
@@ -180,11 +174,6 @@ function visitReactTag(traverse, object, path, state) {
174
move(object.closingElement.range[1], state);
175
}
176
183
- if (childrenToRender.length > 0) {
184
- if (childrenToRender.length > 1) {
185
- append(']', state);
186
- }
187
- }
177
append(')', state);
178
return false;
179
}