Skip to content

Commit

Permalink
fix: parse a<b>>>c as a<(b>>>c) (#14819)
Browse files Browse the repository at this point in the history
* fix: parse a<b>>>c as a<(b>>>c)

* fix: bail out only when they could form bitshift

* Revert "fix: bail out only when they could form bitshift"

This reverts commit c413671.
  • Loading branch information
JLHwung committed Aug 27, 2022
1 parent 92c93a2 commit 6c5ebd1
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 0 deletions.
2 changes: 2 additions & 0 deletions packages/babel-parser/src/plugins/typescript/index.ts
Expand Up @@ -2508,6 +2508,8 @@ export default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>
if (
// a<b>>c is not (a<b>)>c, but a<(b>>c)
tokenType === tt.gt ||
// a<b>>>c is not (a<b>)>>c, but a<(b>>>c)
tokenType === tt.bitShiftR ||
// a<b>c is (a<b)>c
(tokenType !== tt.parenL &&
tokenCanStartExpression(tokenType) &&
Expand Down
@@ -0,0 +1,3 @@
let f, h = 0, j = 0;

f = h >>> 0 < j >>> 0;
@@ -0,0 +1,123 @@
{
"type": "File",
"start":0,"end":44,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":3,"column":22,"index":44}},
"program": {
"type": "Program",
"start":0,"end":44,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":3,"column":22,"index":44}},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "VariableDeclaration",
"start":0,"end":20,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":20,"index":20}},
"declarations": [
{
"type": "VariableDeclarator",
"start":4,"end":5,"loc":{"start":{"line":1,"column":4,"index":4},"end":{"line":1,"column":5,"index":5}},
"id": {
"type": "Identifier",
"start":4,"end":5,"loc":{"start":{"line":1,"column":4,"index":4},"end":{"line":1,"column":5,"index":5},"identifierName":"f"},
"name": "f"
},
"init": null
},
{
"type": "VariableDeclarator",
"start":7,"end":12,"loc":{"start":{"line":1,"column":7,"index":7},"end":{"line":1,"column":12,"index":12}},
"id": {
"type": "Identifier",
"start":7,"end":8,"loc":{"start":{"line":1,"column":7,"index":7},"end":{"line":1,"column":8,"index":8},"identifierName":"h"},
"name": "h"
},
"init": {
"type": "NumericLiteral",
"start":11,"end":12,"loc":{"start":{"line":1,"column":11,"index":11},"end":{"line":1,"column":12,"index":12}},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
{
"type": "VariableDeclarator",
"start":14,"end":19,"loc":{"start":{"line":1,"column":14,"index":14},"end":{"line":1,"column":19,"index":19}},
"id": {
"type": "Identifier",
"start":14,"end":15,"loc":{"start":{"line":1,"column":14,"index":14},"end":{"line":1,"column":15,"index":15},"identifierName":"j"},
"name": "j"
},
"init": {
"type": "NumericLiteral",
"start":18,"end":19,"loc":{"start":{"line":1,"column":18,"index":18},"end":{"line":1,"column":19,"index":19}},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"kind": "let"
},
{
"type": "ExpressionStatement",
"start":22,"end":44,"loc":{"start":{"line":3,"column":0,"index":22},"end":{"line":3,"column":22,"index":44}},
"expression": {
"type": "AssignmentExpression",
"start":22,"end":43,"loc":{"start":{"line":3,"column":0,"index":22},"end":{"line":3,"column":21,"index":43}},
"operator": "=",
"left": {
"type": "Identifier",
"start":22,"end":23,"loc":{"start":{"line":3,"column":0,"index":22},"end":{"line":3,"column":1,"index":23},"identifierName":"f"},
"name": "f"
},
"right": {
"type": "BinaryExpression",
"start":26,"end":43,"loc":{"start":{"line":3,"column":4,"index":26},"end":{"line":3,"column":21,"index":43}},
"left": {
"type": "BinaryExpression",
"start":26,"end":33,"loc":{"start":{"line":3,"column":4,"index":26},"end":{"line":3,"column":11,"index":33}},
"left": {
"type": "Identifier",
"start":26,"end":27,"loc":{"start":{"line":3,"column":4,"index":26},"end":{"line":3,"column":5,"index":27},"identifierName":"h"},
"name": "h"
},
"operator": ">>>",
"right": {
"type": "NumericLiteral",
"start":32,"end":33,"loc":{"start":{"line":3,"column":10,"index":32},"end":{"line":3,"column":11,"index":33}},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
"operator": "<",
"right": {
"type": "BinaryExpression",
"start":36,"end":43,"loc":{"start":{"line":3,"column":14,"index":36},"end":{"line":3,"column":21,"index":43}},
"left": {
"type": "Identifier",
"start":36,"end":37,"loc":{"start":{"line":3,"column":14,"index":36},"end":{"line":3,"column":15,"index":37},"identifierName":"j"},
"name": "j"
},
"operator": ">>>",
"right": {
"type": "NumericLiteral",
"start":42,"end":43,"loc":{"start":{"line":3,"column":20,"index":42},"end":{"line":3,"column":21,"index":43}},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
}
}
],
"directives": []
}
}

0 comments on commit 6c5ebd1

Please sign in to comment.