JSXSpreadChildren, throw in transform-react-jsx (#4988)
This commit is contained in:
parent
670ee996c8
commit
2bbc36d25e
@ -35,6 +35,13 @@ export function JSXExpressionContainer(node: Object) {
|
||||
this.token("}");
|
||||
}
|
||||
|
||||
export function JSXSpreadChild(node: Object) {
|
||||
this.token("{");
|
||||
this.token("...");
|
||||
this.print(node.expression, node);
|
||||
this.token("}");
|
||||
}
|
||||
|
||||
export function JSXText(node: Object) {
|
||||
this.token(node.value);
|
||||
}
|
||||
|
||||
1
packages/babel-generator/test/fixtures/types/XJSSpreadChildren/actual.js
vendored
Normal file
1
packages/babel-generator/test/fixtures/types/XJSSpreadChildren/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
<div>{...this.props.children}</div>;
|
||||
1
packages/babel-generator/test/fixtures/types/XJSSpreadChildren/expected.js
vendored
Normal file
1
packages/babel-generator/test/fixtures/types/XJSSpreadChildren/expected.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
<div>{...this.props.children}</div>;
|
||||
@ -17,6 +17,10 @@ export default function (opts) {
|
||||
throw path.buildCodeFrameError("Namespace tags are not supported. ReactJSX is not XML.");
|
||||
};
|
||||
|
||||
visitor.JSXSpreadChild = function(path) {
|
||||
throw path.buildCodeFrameError("Spread children are not supported.");
|
||||
};
|
||||
|
||||
visitor.JSXElement = {
|
||||
exit(path, file) {
|
||||
let callExpr = buildElementCall(path.get("openingElement"), file);
|
||||
|
||||
@ -0,0 +1 @@
|
||||
<div>{...children}</div>;
|
||||
@ -0,0 +1,3 @@
|
||||
{
|
||||
"throws": "Spread children are not supported."
|
||||
}
|
||||
@ -39,7 +39,7 @@ defineType("JSXElement", {
|
||||
children: {
|
||||
validate: chain(
|
||||
assertValueType("array"),
|
||||
assertEach(assertNodeType("JSXText", "JSXExpressionContainer", "JSXElement"))
|
||||
assertEach(assertNodeType("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement"))
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -59,6 +59,16 @@ defineType("JSXExpressionContainer", {
|
||||
}
|
||||
});
|
||||
|
||||
defineType("JSXSpreadChild", {
|
||||
visitor: ["expression"],
|
||||
aliases: ["JSX", "Immutable"],
|
||||
fields: {
|
||||
expression: {
|
||||
validate: assertNodeType("Expression")
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
defineType("JSXIdentifier", {
|
||||
builder: ["name"],
|
||||
aliases: ["JSX", "Expression"],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user