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("}");
|
this.token("}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function JSXSpreadChild(node: Object) {
|
||||||
|
this.token("{");
|
||||||
|
this.token("...");
|
||||||
|
this.print(node.expression, node);
|
||||||
|
this.token("}");
|
||||||
|
}
|
||||||
|
|
||||||
export function JSXText(node: Object) {
|
export function JSXText(node: Object) {
|
||||||
this.token(node.value);
|
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.");
|
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 = {
|
visitor.JSXElement = {
|
||||||
exit(path, file) {
|
exit(path, file) {
|
||||||
let callExpr = buildElementCall(path.get("openingElement"), 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: {
|
children: {
|
||||||
validate: chain(
|
validate: chain(
|
||||||
assertValueType("array"),
|
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", {
|
defineType("JSXIdentifier", {
|
||||||
builder: ["name"],
|
builder: ["name"],
|
||||||
aliases: ["JSX", "Expression"],
|
aliases: ["JSX", "Expression"],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user