Skip to content

Commit

Permalink
fix(es/parser): Fix >= with type instantiate (#7388)
Browse files Browse the repository at this point in the history
  • Loading branch information
Austaras committed May 14, 2023
1 parent e88ae37 commit fa7a352
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 2 deletions.
5 changes: 4 additions & 1 deletion crates/swc_ecma_parser/src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ macro_rules! tok {
crate::token::Token::AssignOp(crate::token::AssignOpToken::DivAssign)
};
('%') => {
crate::token::Token::BinOp(Mod)
crate::token::Token::BinOp(crate::token::BinOpToken::Mod)
};
('~') => {
crate::token::Token::Tilde
Expand All @@ -116,6 +116,9 @@ macro_rules! tok {
(">>") => {
crate::token::Token::BinOp(crate::token::BinOpToken::RShift)
};
(">=") => {
crate::token::Token::BinOp(crate::token::BinOpToken::GtEq)
};

("++") => {
crate::token::Token::PlusPlus
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_parser/src/parser/typescript.rs
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@ impl<I: Tokens> Parser<I> {

if is_one_of!(
p, '<', // invalid syntax
'>', ">>", '+', '-', // becomes relational expression
'>', '=', ">>", ">=", '+', '-', // becomes relational expression
/* these should be type arguments in function call or template,
* not instantiation expression */
'(', '`'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fn(x < y, x >= y1)
104 changes: 104 additions & 0 deletions crates/swc_ecma_parser/tests/typescript/issue-7387/input.ts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"type": "Script",
"span": {
"start": 1,
"end": 19,
"ctxt": 0
},
"body": [
{
"type": "ExpressionStatement",
"span": {
"start": 1,
"end": 19,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 1,
"end": 19,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 1,
"end": 3,
"ctxt": 0
},
"value": "fn",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "BinaryExpression",
"span": {
"start": 4,
"end": 9,
"ctxt": 0
},
"operator": "<",
"left": {
"type": "Identifier",
"span": {
"start": 4,
"end": 5,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 8,
"end": 9,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
{
"spread": null,
"expression": {
"type": "BinaryExpression",
"span": {
"start": 11,
"end": 18,
"ctxt": 0
},
"operator": ">=",
"left": {
"type": "Identifier",
"span": {
"start": 11,
"end": 12,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 16,
"end": 18,
"ctxt": 0
},
"value": "y1",
"optional": false
}
}
}
],
"typeArguments": null
}
}
],
"interpreter": null
}

2 comments on commit fa7a352

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: fa7a352 Previous: 9b3a41c Ratio
es/full/bugs-1 352320 ns/iter (± 117249) 247365 ns/iter (± 3498) 1.42
es/full/minify/libraries/antd 1873427783 ns/iter (± 84614633) 1188870710 ns/iter (± 13300142) 1.58
es/full/minify/libraries/d3 357452893 ns/iter (± 38318281) 235675961 ns/iter (± 1729352) 1.52
es/full/minify/libraries/echarts 1246993017 ns/iter (± 29831446) 939152531 ns/iter (± 5212308) 1.33
es/full/minify/libraries/jquery 92041151 ns/iter (± 570379) 76916355 ns/iter (± 111604) 1.20
es/full/minify/libraries/lodash 107371128 ns/iter (± 471532) 86228799 ns/iter (± 235761) 1.25
es/full/minify/libraries/moment 53455994 ns/iter (± 504214) 44860960 ns/iter (± 268699) 1.19
es/full/minify/libraries/react 19665977 ns/iter (± 135984) 16312118 ns/iter (± 13797) 1.21
es/full/minify/libraries/terser 254014042 ns/iter (± 4813593) 197506737 ns/iter (± 710219) 1.29
es/full/minify/libraries/three 445126645 ns/iter (± 4175888) 338944195 ns/iter (± 1373729) 1.31
es/full/minify/libraries/typescript 2986951854 ns/iter (± 28951973) 2385634286 ns/iter (± 10178795) 1.25
es/full/minify/libraries/victory 682000301 ns/iter (± 12206436) 495670709 ns/iter (± 1675318) 1.38
es/full/minify/libraries/vue 131310673 ns/iter (± 2202316) 106999657 ns/iter (± 195390) 1.23
es/full/codegen/es3 33859 ns/iter (± 104) 32629 ns/iter (± 46) 1.04
es/full/codegen/es5 33964 ns/iter (± 47) 32732 ns/iter (± 209) 1.04
es/full/codegen/es2015 33891 ns/iter (± 85) 32632 ns/iter (± 60) 1.04
es/full/codegen/es2016 33868 ns/iter (± 99) 32603 ns/iter (± 32) 1.04
es/full/codegen/es2017 33805 ns/iter (± 64) 32660 ns/iter (± 66) 1.04
es/full/codegen/es2018 33847 ns/iter (± 61) 32669 ns/iter (± 90) 1.04
es/full/codegen/es2019 33834 ns/iter (± 83) 32761 ns/iter (± 68) 1.03
es/full/codegen/es2020 33831 ns/iter (± 96) 32614 ns/iter (± 144) 1.04
es/full/all/es3 180702568 ns/iter (± 2375241) 157444104 ns/iter (± 717969) 1.15
es/full/all/es5 170225702 ns/iter (± 2885230) 150184208 ns/iter (± 413623) 1.13
es/full/all/es2015 131696656 ns/iter (± 1506380) 111034240 ns/iter (± 532218) 1.19
es/full/all/es2016 129195855 ns/iter (± 2149451) 110297663 ns/iter (± 460375) 1.17
es/full/all/es2017 128912899 ns/iter (± 1145637) 109946577 ns/iter (± 562489) 1.17
es/full/all/es2018 124272847 ns/iter (± 469969) 107645800 ns/iter (± 374501) 1.15
es/full/all/es2019 122218215 ns/iter (± 948825) 106992099 ns/iter (± 562066) 1.14
es/full/all/es2020 116388959 ns/iter (± 736980) 101889782 ns/iter (± 408400) 1.14
es/full/parser 506994 ns/iter (± 8109) 458276 ns/iter (± 4688) 1.11
es/full/base/fixer 22962 ns/iter (± 49) 16958 ns/iter (± 57) 1.35
es/full/base/resolver_and_hygiene 85304 ns/iter (± 188) 74187 ns/iter (± 155) 1.15
serialization of serde 128 ns/iter (± 0) 113 ns/iter (± 0) 1.13
css/minify/libraries/bootstrap 27419809 ns/iter (± 452007) 23323692 ns/iter (± 21970) 1.18
css/visitor/compare/clone 2123002 ns/iter (± 30689) 1650011 ns/iter (± 8411) 1.29
css/visitor/compare/visit_mut_span 2334677 ns/iter (± 5264) 1770561 ns/iter (± 4013) 1.32
css/visitor/compare/visit_mut_span_panic 2382324 ns/iter (± 6691) 1848886 ns/iter (± 3412) 1.29
css/visitor/compare/fold_span 3119716 ns/iter (± 8411) 2535793 ns/iter (± 8360) 1.23
css/visitor/compare/fold_span_panic 3273072 ns/iter (± 11164) 2717945 ns/iter (± 6794) 1.20
css/lexer/bootstrap_5_1_3 5194131 ns/iter (± 12783) 4538416 ns/iter (± 2966) 1.14
css/lexer/foundation_6_7_4 4369397 ns/iter (± 9900) 3907275 ns/iter (± 1736) 1.12
css/lexer/tailwind_3_1_1 829419 ns/iter (± 1386) 738080 ns/iter (± 456) 1.12
css/parser/bootstrap_5_1_3 21050131 ns/iter (± 189034) 18757783 ns/iter (± 6780) 1.12
css/parser/foundation_6_7_4 16693357 ns/iter (± 123927) 15029483 ns/iter (± 14552) 1.11
css/parser/tailwind_3_1_1 3213945 ns/iter (± 19577) 2878924 ns/iter (± 3005) 1.12
es/codegen/colors 329534 ns/iter (± 185156) 329925 ns/iter (± 187193) 1.00
es/codegen/large 1266421 ns/iter (± 656871) 1344746 ns/iter (± 715634) 0.94
es/codegen/with-parser/colors 48663 ns/iter (± 210) 41835 ns/iter (± 404) 1.16
es/codegen/with-parser/large 528018 ns/iter (± 1948) 476278 ns/iter (± 478) 1.11
es/minify/libraries/antd 1346973441 ns/iter (± 19205559) 1038959041 ns/iter (± 8873610) 1.30
es/minify/libraries/d3 260465519 ns/iter (± 5757859) 210085727 ns/iter (± 361398) 1.24
es/minify/libraries/echarts 1103003789 ns/iter (± 5322116) 818520590 ns/iter (± 1926497) 1.35
es/minify/libraries/jquery 81105903 ns/iter (± 642651) 68433688 ns/iter (± 227838) 1.19
es/minify/libraries/lodash 98063509 ns/iter (± 889223) 78848672 ns/iter (± 175447) 1.24
es/minify/libraries/moment 47180341 ns/iter (± 386679) 39831620 ns/iter (± 88582) 1.18
es/minify/libraries/react 17457494 ns/iter (± 74943) 14804869 ns/iter (± 66690) 1.18
es/minify/libraries/terser 213611811 ns/iter (± 1396399) 172074132 ns/iter (± 239718) 1.24
es/minify/libraries/three 367860056 ns/iter (± 3050177) 286664866 ns/iter (± 384669) 1.28
es/minify/libraries/typescript 2501972022 ns/iter (± 31802787) 2062178200 ns/iter (± 7537404) 1.21
es/minify/libraries/victory 550823268 ns/iter (± 20001391) 421805032 ns/iter (± 1064791) 1.31
es/minify/libraries/vue 120799868 ns/iter (± 713767) 97043675 ns/iter (± 148989) 1.24
es/visitor/compare/clone 2371942 ns/iter (± 12360) 1999276 ns/iter (± 4559) 1.19
es/visitor/compare/visit_mut_span 2734271 ns/iter (± 26394) 2324793 ns/iter (± 2684) 1.18
es/visitor/compare/visit_mut_span_panic 2787907 ns/iter (± 9700) 2373246 ns/iter (± 4905) 1.17
es/visitor/compare/fold_span 3888566 ns/iter (± 40865) 3413871 ns/iter (± 8305) 1.14
es/visitor/compare/fold_span_panic 3977254 ns/iter (± 16029) 3550782 ns/iter (± 8897) 1.12
es/lexer/colors 12897 ns/iter (± 27) 11953 ns/iter (± 80) 1.08
es/lexer/angular 6341933 ns/iter (± 9306) 5668190 ns/iter (± 8027) 1.12
es/lexer/backbone 785509 ns/iter (± 1234) 727578 ns/iter (± 766) 1.08
es/lexer/jquery 4383609 ns/iter (± 6268) 4168106 ns/iter (± 3197) 1.05
es/lexer/jquery mobile 6829283 ns/iter (± 10864) 6394159 ns/iter (± 6551) 1.07
es/lexer/mootools 3440022 ns/iter (± 9445) 3292420 ns/iter (± 1876) 1.04
es/lexer/underscore 645046 ns/iter (± 7696) 602619 ns/iter (± 1755) 1.07
es/lexer/three 20723169 ns/iter (± 51908) 19697114 ns/iter (± 64989) 1.05
es/lexer/yui 3845022 ns/iter (± 8877) 3617350 ns/iter (± 4909) 1.06
es/parser/colors 28366 ns/iter (± 51) 25841 ns/iter (± 42) 1.10
es/parser/angular 15016357 ns/iter (± 170281) 12975683 ns/iter (± 48615) 1.16
es/parser/backbone 2165727 ns/iter (± 17169) 1924310 ns/iter (± 6364) 1.13
es/parser/jquery 11627535 ns/iter (± 194679) 10489231 ns/iter (± 63368) 1.11
es/parser/jquery mobile 18486745 ns/iter (± 366806) 16210437 ns/iter (± 43597) 1.14
es/parser/mootools 8877615 ns/iter (± 19647) 8072597 ns/iter (± 21858) 1.10
es/parser/underscore 1822600 ns/iter (± 11114) 1658649 ns/iter (± 9365) 1.10
es/parser/three 54901877 ns/iter (± 257420) 44952327 ns/iter (± 109843) 1.22
es/parser/yui 9022024 ns/iter (± 51558) 8078266 ns/iter (± 22236) 1.12
es/preset-env/usage/builtin_type 139118 ns/iter (± 33861) 147508 ns/iter (± 40353) 0.94
es/preset-env/usage/property 19592 ns/iter (± 123) 15349 ns/iter (± 59) 1.28
es/resolver/typescript 113542652 ns/iter (± 3451204) 88346513 ns/iter (± 946876) 1.29
es/fixer/typescript 82348669 ns/iter (± 3020355) 63963510 ns/iter (± 662449) 1.29
es/hygiene/typescript 173777880 ns/iter (± 2153166) 129753651 ns/iter (± 724339) 1.34
es/resolver_with_hygiene/typescript 313413533 ns/iter (± 3638596) 232273234 ns/iter (± 312424) 1.35
es/visitor/base-perf/module_clone 81862 ns/iter (± 491) 58688 ns/iter (± 272) 1.39
es/visitor/base-perf/fold_empty 90751 ns/iter (± 389) 62648 ns/iter (± 347) 1.45
es/visitor/base-perf/fold_noop_impl_all 90804 ns/iter (± 791) 62199 ns/iter (± 266) 1.46
es/visitor/base-perf/fold_noop_impl_vec 91044 ns/iter (± 281) 62273 ns/iter (± 602) 1.46
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 54 ns/iter (± 0) 1.06
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 37 ns/iter (± 0) 1.11
es/visitor/base-perf/boxing_boxed 101 ns/iter (± 0) 108 ns/iter (± 0) 0.94
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 1) 76 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_contains_this 3592 ns/iter (± 53) 2659 ns/iter (± 24) 1.35
es/base/parallel/resolver/typescript 5914528349 ns/iter (± 560121056) 3890319278 ns/iter (± 244320255) 1.52
es/base/parallel/hygiene/typescript 2003091009 ns/iter (± 18237220) 1418290551 ns/iter (± 16522168) 1.41
misc/visitors/time-complexity/time 5 104 ns/iter (± 0) 98 ns/iter (± 2) 1.06
misc/visitors/time-complexity/time 10 347 ns/iter (± 1) 257 ns/iter (± 0) 1.35
misc/visitors/time-complexity/time 15 653 ns/iter (± 12) 507 ns/iter (± 8) 1.29
misc/visitors/time-complexity/time 20 1207 ns/iter (± 6) 1089 ns/iter (± 8) 1.11
misc/visitors/time-complexity/time 40 6590 ns/iter (± 77) 3779 ns/iter (± 15) 1.74
misc/visitors/time-complexity/time 60 17098 ns/iter (± 54) 8380 ns/iter (± 455) 2.04
es/full-target/es2016 252633 ns/iter (± 781) 224008 ns/iter (± 430) 1.13
es/full-target/es2017 244997 ns/iter (± 396) 213469 ns/iter (± 419) 1.15
es/full-target/es2018 234248 ns/iter (± 350) 203253 ns/iter (± 555) 1.15
es2020_nullish_coalescing 93497 ns/iter (± 442) 68922 ns/iter (± 271) 1.36
es2020_optional_chaining 124362 ns/iter (± 321) 96655 ns/iter (± 251) 1.29
es2022_class_properties 148314 ns/iter (± 196) 115306 ns/iter (± 306) 1.29
es2018_object_rest_spread 96142 ns/iter (± 271) 73728 ns/iter (± 253) 1.30
es2019_optional_catch_binding 85683 ns/iter (± 287) 63080 ns/iter (± 159) 1.36
es2017_async_to_generator 85613 ns/iter (± 295) 61761 ns/iter (± 259) 1.39
es2016_exponentiation 90916 ns/iter (± 257) 66621 ns/iter (± 353) 1.36
es2015_arrow 94078 ns/iter (± 481) 70256 ns/iter (± 179) 1.34
es2015_block_scoped_fn 92282 ns/iter (± 273) 66426 ns/iter (± 216) 1.39
es2015_block_scoping 169080 ns/iter (± 631) 118794 ns/iter (± 524) 1.42

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: fa7a352 Previous: 9b3a41c Ratio
misc/visitors/time-complexity/time 60 17098 ns/iter (± 54) 8380 ns/iter (± 455) 2.04

This comment was automatically generated by workflow using github-action-benchmark.

CC: @kdy1

Please sign in to comment.