@babel/preset-typescript: fix tsx assigment issue (#12599)
This commit is contained in:
parent
fce3e7124a
commit
6c9a481e83
@ -2450,7 +2450,10 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
let jsx;
|
let jsx;
|
||||||
let typeCast;
|
let typeCast;
|
||||||
|
|
||||||
if (this.match(tt.jsxTagStart)) {
|
if (
|
||||||
|
this.hasPlugin("jsx") &&
|
||||||
|
(this.match(tt.jsxTagStart) || this.isRelational("<"))
|
||||||
|
) {
|
||||||
// Prefer to parse JSX if possible. But may be an arrow fn.
|
// Prefer to parse JSX if possible. But may be an arrow fn.
|
||||||
state = this.state.clone();
|
state = this.state.clone();
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
let a = 2
|
||||||
|
|
||||||
|
a == 3 ? (a = <h1>123</h1>) : (a = <h1>abc</h1>)
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"plugins": ["jsx", "typescript"]
|
||||||
|
}
|
||||||
163
packages/babel-parser/test/fixtures/typescript/tsx/assignment-in-conditional-expression/output.json
vendored
Normal file
163
packages/babel-parser/test/fixtures/typescript/tsx/assignment-in-conditional-expression/output.json
vendored
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
{
|
||||||
|
"type": "File",
|
||||||
|
"start":0,"end":59,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":48}},
|
||||||
|
"program": {
|
||||||
|
"type": "Program",
|
||||||
|
"start":0,"end":59,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":48}},
|
||||||
|
"sourceType": "module",
|
||||||
|
"interpreter": null,
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}},
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"type": "VariableDeclarator",
|
||||||
|
"start":4,"end":9,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":9}},
|
||||||
|
"id": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"start":4,"end":5,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":5},"identifierName":"a"},
|
||||||
|
"name": "a"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"type": "NumericLiteral",
|
||||||
|
"start":8,"end":9,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":9}},
|
||||||
|
"extra": {
|
||||||
|
"rawValue": 2,
|
||||||
|
"raw": "2"
|
||||||
|
},
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kind": "let"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"start":11,"end":59,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},
|
||||||
|
"expression": {
|
||||||
|
"type": "ConditionalExpression",
|
||||||
|
"start":11,"end":59,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},
|
||||||
|
"test": {
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"start":11,"end":17,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":6}},
|
||||||
|
"left": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"start":11,"end":12,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":1},"identifierName":"a"},
|
||||||
|
"name": "a"
|
||||||
|
},
|
||||||
|
"operator": "==",
|
||||||
|
"right": {
|
||||||
|
"type": "NumericLiteral",
|
||||||
|
"start":16,"end":17,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":6}},
|
||||||
|
"extra": {
|
||||||
|
"rawValue": 3,
|
||||||
|
"raw": "3"
|
||||||
|
},
|
||||||
|
"value": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"consequent": {
|
||||||
|
"type": "AssignmentExpression",
|
||||||
|
"start":21,"end":37,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":26}},
|
||||||
|
"extra": {
|
||||||
|
"parenthesized": true,
|
||||||
|
"parenStart": 20
|
||||||
|
},
|
||||||
|
"operator": "=",
|
||||||
|
"left": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"start":21,"end":22,"loc":{"start":{"line":3,"column":10},"end":{"line":3,"column":11},"identifierName":"a"},
|
||||||
|
"name": "a"
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"type": "JSXElement",
|
||||||
|
"start":25,"end":37,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":26}},
|
||||||
|
"openingElement": {
|
||||||
|
"type": "JSXOpeningElement",
|
||||||
|
"start":25,"end":29,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":18}},
|
||||||
|
"name": {
|
||||||
|
"type": "JSXIdentifier",
|
||||||
|
"start":26,"end":28,"loc":{"start":{"line":3,"column":15},"end":{"line":3,"column":17}},
|
||||||
|
"name": "h1"
|
||||||
|
},
|
||||||
|
"attributes": [],
|
||||||
|
"selfClosing": false
|
||||||
|
},
|
||||||
|
"closingElement": {
|
||||||
|
"type": "JSXClosingElement",
|
||||||
|
"start":32,"end":37,"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":26}},
|
||||||
|
"name": {
|
||||||
|
"type": "JSXIdentifier",
|
||||||
|
"start":34,"end":36,"loc":{"start":{"line":3,"column":23},"end":{"line":3,"column":25}},
|
||||||
|
"name": "h1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "JSXText",
|
||||||
|
"start":29,"end":32,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":21}},
|
||||||
|
"extra": {
|
||||||
|
"rawValue": "123",
|
||||||
|
"raw": "123"
|
||||||
|
},
|
||||||
|
"value": "123"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"alternate": {
|
||||||
|
"type": "AssignmentExpression",
|
||||||
|
"start":42,"end":58,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":47}},
|
||||||
|
"extra": {
|
||||||
|
"parenthesized": true,
|
||||||
|
"parenStart": 41
|
||||||
|
},
|
||||||
|
"operator": "=",
|
||||||
|
"left": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"start":42,"end":43,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":32},"identifierName":"a"},
|
||||||
|
"name": "a"
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"type": "JSXElement",
|
||||||
|
"start":46,"end":58,"loc":{"start":{"line":3,"column":35},"end":{"line":3,"column":47}},
|
||||||
|
"openingElement": {
|
||||||
|
"type": "JSXOpeningElement",
|
||||||
|
"start":46,"end":50,"loc":{"start":{"line":3,"column":35},"end":{"line":3,"column":39}},
|
||||||
|
"name": {
|
||||||
|
"type": "JSXIdentifier",
|
||||||
|
"start":47,"end":49,"loc":{"start":{"line":3,"column":36},"end":{"line":3,"column":38}},
|
||||||
|
"name": "h1"
|
||||||
|
},
|
||||||
|
"attributes": [],
|
||||||
|
"selfClosing": false
|
||||||
|
},
|
||||||
|
"closingElement": {
|
||||||
|
"type": "JSXClosingElement",
|
||||||
|
"start":53,"end":58,"loc":{"start":{"line":3,"column":42},"end":{"line":3,"column":47}},
|
||||||
|
"name": {
|
||||||
|
"type": "JSXIdentifier",
|
||||||
|
"start":55,"end":57,"loc":{"start":{"line":3,"column":44},"end":{"line":3,"column":46}},
|
||||||
|
"name": "h1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "JSXText",
|
||||||
|
"start":50,"end":53,"loc":{"start":{"line":3,"column":39},"end":{"line":3,"column":42}},
|
||||||
|
"extra": {
|
||||||
|
"rawValue": "abc",
|
||||||
|
"raw": "abc"
|
||||||
|
},
|
||||||
|
"value": "abc"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"directives": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -281,7 +281,6 @@ jsNoImplicitAnyNoCascadingReferenceErrors.ts
|
|||||||
jsdocAccessEnumType.ts
|
jsdocAccessEnumType.ts
|
||||||
jsdocPropertyTagInvalid.ts
|
jsdocPropertyTagInvalid.ts
|
||||||
jsxAttributeWithoutExpressionReact.tsx
|
jsxAttributeWithoutExpressionReact.tsx
|
||||||
jsxIntrinsicElementsExtendsRecord.tsx
|
|
||||||
letAndVarRedeclaration.ts
|
letAndVarRedeclaration.ts
|
||||||
letAsIdentifier.ts
|
letAsIdentifier.ts
|
||||||
letAsIdentifierInStrictMode.ts
|
letAsIdentifierInStrictMode.ts
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user