babel-types lists JSXIdentifier as an Expression (#6960)

Currently, Babel is treating JSXIdentifier, JSXMemberExpression, and JSXEmptyExpression as expressions as well, which means Babel will for example incorrectly allow you to place these anywhere an expression is wanted.

Closes #6851.
This commit is contained in:
Francisco Ryan Tolmasky I 2017-12-18 07:27:43 -08:00 committed by Brian Ng
parent 398bc43656
commit f0e46772a6
3 changed files with 7 additions and 7 deletions

View File

@ -1262,7 +1262,7 @@ declare class BabelNodeTSTypeParameter extends BabelNode {
name?: string; name?: string;
} }
type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXFragment | BabelNodeParenthesizedExpression | BabelNodeAwaitExpression | BabelNodeBindExpression | BabelNodeImport | BabelNodeDoExpression | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression; type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeParenthesizedExpression | BabelNodeAwaitExpression | BabelNodeBindExpression | BabelNodeImport | BabelNodeDoExpression | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression;
type BabelNodeBinary = BabelNodeBinaryExpression | BabelNodeLogicalExpression; type BabelNodeBinary = BabelNodeBinaryExpression | BabelNodeLogicalExpression;
type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassDeclaration | BabelNodeClassExpression | BabelNodeForOfStatement | BabelNodeClassMethod; type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassDeclaration | BabelNodeClassExpression | BabelNodeForOfStatement | BabelNodeClassMethod;
type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod; type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod;

View File

@ -1111,7 +1111,7 @@ t.jSXEmptyExpression()
See also `t.isJSXEmptyExpression(node, opts)` and `t.assertJSXEmptyExpression(node, opts)`. See also `t.isJSXEmptyExpression(node, opts)` and `t.assertJSXEmptyExpression(node, opts)`.
Aliases: `JSX`, `Expression` Aliases: `JSX`
--- ---
@ -1151,7 +1151,7 @@ t.jSXIdentifier(name)
See also `t.isJSXIdentifier(node, opts)` and `t.assertJSXIdentifier(node, opts)`. See also `t.isJSXIdentifier(node, opts)` and `t.assertJSXIdentifier(node, opts)`.
Aliases: `JSX`, `Expression` Aliases: `JSX`
- `name`: `string` (required) - `name`: `string` (required)
@ -1164,7 +1164,7 @@ t.jSXMemberExpression(object, property)
See also `t.isJSXMemberExpression(node, opts)` and `t.assertJSXMemberExpression(node, opts)`. See also `t.isJSXMemberExpression(node, opts)` and `t.assertJSXMemberExpression(node, opts)`.
Aliases: `JSX`, `Expression` Aliases: `JSX`
- `object`: `JSXMemberExpression | JSXIdentifier` (required) - `object`: `JSXMemberExpression | JSXIdentifier` (required)
- `property`: `JSXIdentifier` (required) - `property`: `JSXIdentifier` (required)

View File

@ -65,7 +65,7 @@ defineType("JSXElement", {
}); });
defineType("JSXEmptyExpression", { defineType("JSXEmptyExpression", {
aliases: ["JSX", "Expression"], aliases: ["JSX"],
}); });
defineType("JSXExpressionContainer", { defineType("JSXExpressionContainer", {
@ -90,7 +90,7 @@ defineType("JSXSpreadChild", {
defineType("JSXIdentifier", { defineType("JSXIdentifier", {
builder: ["name"], builder: ["name"],
aliases: ["JSX", "Expression"], aliases: ["JSX"],
fields: { fields: {
name: { name: {
validate: assertValueType("string"), validate: assertValueType("string"),
@ -100,7 +100,7 @@ defineType("JSXIdentifier", {
defineType("JSXMemberExpression", { defineType("JSXMemberExpression", {
visitor: ["object", "property"], visitor: ["object", "property"],
aliases: ["JSX", "Expression"], aliases: ["JSX"],
fields: { fields: {
object: { object: {
validate: assertNodeType("JSXMemberExpression", "JSXIdentifier"), validate: assertNodeType("JSXMemberExpression", "JSXIdentifier"),