Merge pull request #3099 from hzoo/validate-jsx

add more validation for jsx nodes
This commit is contained in:
Sebastian McKenzie
2015-11-24 20:42:42 +11:00
4 changed files with 10 additions and 7 deletions

View File

@@ -288,7 +288,7 @@ export function valueToNode(value: any): Object {
if (t.isValidIdentifier(key)) {
nodeKey = t.identifier(key);
} else {
nodeKey = t.literal(key);
nodeKey = t.stringLiteral(key);
}
props.push(t.objectProperty(nodeKey, t.valueToNode(value[key])));
}

View File

@@ -478,7 +478,7 @@ defineType("ObjectMethod", {
},
key: {
validate(node, key, val) {
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "Literal"];
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
assertNodeType(...expectedTypes)(node, key, val);
}
},
@@ -510,7 +510,7 @@ defineType("ObjectProperty", {
},
key: {
validate(node, key, val) {
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "Literal"];
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
assertNodeType(...expectedTypes)(node, key, val);
}
},

View File

@@ -254,7 +254,7 @@ defineType("ClassMethod", {
},
key: {
validate(node, key, val) {
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "Literal"];
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
assertNodeType(...expectedTypes)(node, key, val);
}
},

View File

@@ -7,7 +7,7 @@ defineType("JSXAttribute", {
aliases: ["JSX", "Immutable"],
fields: {
name: {
validate: assertNodeType("JSXIdentifier", "JSXMemberExpression")
validate: assertNodeType("JSXIdentifier", "JSXNamespacedName")
},
value: {
optional: true,
@@ -39,7 +39,10 @@ defineType("JSXElement", {
validate: assertNodeType("JSXClosingElement")
},
children: {
// todo
validate: chain(
assertValueType("array"),
assertEach(assertNodeType("StringLiteral", "JSXExpressionContainer", "JSXElement"))
)
}
}
});
@@ -73,7 +76,7 @@ defineType("JSXMemberExpression", {
aliases: ["JSX", "Expression"],
fields: {
object: {
validate: assertNodeType("JSXIdentifier")
validate: assertNodeType("JSXMemberExpression", "JSXIdentifier")
},
property: {
validate: assertNodeType("JSXIdentifier")