Skip to content

Commit

Permalink
fix(es/parser): Allow using package as a parameter name in interface (
Browse files Browse the repository at this point in the history
#7438)

**Related issue:**

 - Closes #7186.
  • Loading branch information
kdy1 authored May 24, 2023
1 parent f9f0cc2 commit 33a922b
Show file tree
Hide file tree
Showing 5 changed files with 377 additions and 1 deletion.
4 changes: 3 additions & 1 deletion crates/swc_ecma_parser/src/parser/typescript.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ impl<I: Tokens> Parser<I> {
/// `tsParseEntityName`
fn parse_ts_entity_name(&mut self, allow_reserved_words: bool) -> PResult<TsEntityName> {
debug_assert!(self.input.syntax().typescript());
trace_cur!(self, parse_ts_entity_name);

let init = self.parse_ident_name()?;
if let Ident {
Expand Down Expand Up @@ -1253,7 +1254,7 @@ impl<I: Tokens> Parser<I> {

let _ = self.eat_any_ts_modifier()?;

if is_one_of!(self, IdentRef, "this") {
if is_one_of!(self, IdentName, "this") {
bump!(self);
return Ok(true);
}
Expand Down Expand Up @@ -1808,6 +1809,7 @@ impl<I: Tokens> Parser<I> {
/// `tsParseParenthesizedType`
fn parse_ts_parenthesized_type(&mut self) -> PResult<TsParenthesizedType> {
debug_assert!(self.input.syntax().typescript());
trace_cur!(self, parse_ts_parenthesized_type);

let start = cur_pos!(self);
expect!(self, '(');
Expand Down
3 changes: 3 additions & 0 deletions crates/swc_ecma_parser/tests/typescript/issue-7186/1/input.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export interface PackageManager {
onDidUnloadPackage(callback: (package: Package) => void): Disposable;
}
184 changes: 184 additions & 0 deletions crates/swc_ecma_parser/tests/typescript/issue-7186/1/input.ts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
{
"type": "Module",
"span": {
"start": 1,
"end": 110,
"ctxt": 0
},
"body": [
{
"type": "ExportDeclaration",
"span": {
"start": 1,
"end": 110,
"ctxt": 0
},
"declaration": {
"type": "TsInterfaceDeclaration",
"span": {
"start": 8,
"end": 110,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 18,
"end": 32,
"ctxt": 0
},
"value": "PackageManager",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 33,
"end": 110,
"ctxt": 0
},
"body": [
{
"type": "TsMethodSignature",
"span": {
"start": 39,
"end": 108,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 39,
"end": 57,
"ctxt": 0
},
"value": "onDidUnloadPackage",
"optional": false
},
"computed": false,
"optional": false,
"params": [
{
"type": "Identifier",
"span": {
"start": 58,
"end": 94,
"ctxt": 0
},
"value": "callback",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 66,
"end": 94,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 68,
"end": 94,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 69,
"end": 85,
"ctxt": 0
},
"value": "package",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 76,
"end": 85,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 78,
"end": 85,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 78,
"end": 85,
"ctxt": 0
},
"value": "Package",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 87,
"end": 94,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 90,
"end": 94,
"ctxt": 0
},
"kind": "void"
}
}
}
}
}
],
"typeAnn": {
"type": "TsTypeAnnotation",
"span": {
"start": 95,
"end": 107,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 97,
"end": 107,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 97,
"end": 107,
"ctxt": 0
},
"value": "Disposable",
"optional": false
},
"typeParams": null
}
},
"typeParams": null
}
]
}
}
}
],
"interpreter": null
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export interface PackageManager {
onDidUnloadPackage(callback: (package: Package) => void): Disposable;
}
Loading

2 comments on commit 33a922b

@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: 33a922b Previous: f3d660f Ratio
misc/visitors/time-complexity/time 60 17807 ns/iter (± 39) 7675 ns/iter (± 11) 2.32

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

CC: @kdy1

@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: 33a922b Previous: f3d660f Ratio
es/full/bugs-1 294389 ns/iter (± 12180) 249536 ns/iter (± 8334) 1.18
es/full/minify/libraries/antd 1539095163 ns/iter (± 17138529) 1267090522 ns/iter (± 16259381) 1.21
es/full/minify/libraries/d3 293807940 ns/iter (± 2157217) 255687706 ns/iter (± 3952690) 1.15
es/full/minify/libraries/echarts 1204768279 ns/iter (± 7482202) 1040692256 ns/iter (± 11117705) 1.16
es/full/minify/libraries/jquery 92283625 ns/iter (± 691956) 78397711 ns/iter (± 635545) 1.18
es/full/minify/libraries/lodash 107117619 ns/iter (± 1180832) 87240848 ns/iter (± 193711) 1.23
es/full/minify/libraries/moment 53235015 ns/iter (± 307532) 44709836 ns/iter (± 44877) 1.19
es/full/minify/libraries/react 19240363 ns/iter (± 104232) 16301441 ns/iter (± 60769) 1.18
es/full/minify/libraries/terser 246813513 ns/iter (± 2726342) 199555208 ns/iter (± 1397748) 1.24
es/full/minify/libraries/three 431102820 ns/iter (± 3157839) 340668687 ns/iter (± 1207111) 1.27
es/full/minify/libraries/typescript 2936282143 ns/iter (± 19543558) 2449631518 ns/iter (± 21635616) 1.20
es/full/minify/libraries/victory 657480276 ns/iter (± 2678288) 520309185 ns/iter (± 6667667) 1.26
es/full/minify/libraries/vue 132291145 ns/iter (± 1301498) 110302065 ns/iter (± 751437) 1.20
es/full/codegen/es3 34366 ns/iter (± 212) 29972 ns/iter (± 64) 1.15
es/full/codegen/es5 34438 ns/iter (± 21) 29998 ns/iter (± 77) 1.15
es/full/codegen/es2015 34439 ns/iter (± 71) 29972 ns/iter (± 48) 1.15
es/full/codegen/es2016 34429 ns/iter (± 44) 29995 ns/iter (± 70) 1.15
es/full/codegen/es2017 34454 ns/iter (± 72) 29999 ns/iter (± 61) 1.15
es/full/codegen/es2018 34215 ns/iter (± 133) 29993 ns/iter (± 82) 1.14
es/full/codegen/es2019 34418 ns/iter (± 40) 30054 ns/iter (± 62) 1.15
es/full/codegen/es2020 34232 ns/iter (± 162) 30073 ns/iter (± 84) 1.14
es/full/all/es3 179656497 ns/iter (± 2570706) 157741176 ns/iter (± 598075) 1.14
es/full/all/es5 172233194 ns/iter (± 3684592) 151259573 ns/iter (± 1046718) 1.14
es/full/all/es2015 135457194 ns/iter (± 2212679) 111540601 ns/iter (± 306770) 1.21
es/full/all/es2016 132905889 ns/iter (± 2294471) 111132453 ns/iter (± 461193) 1.20
es/full/all/es2017 132002455 ns/iter (± 1319707) 109816085 ns/iter (± 553609) 1.20
es/full/all/es2018 126488950 ns/iter (± 983839) 108195800 ns/iter (± 423408) 1.17
es/full/all/es2019 125392578 ns/iter (± 1698541) 107666358 ns/iter (± 755676) 1.16
es/full/all/es2020 118202768 ns/iter (± 572133) 102377358 ns/iter (± 778197) 1.15
es/full/parser 519350 ns/iter (± 8632) 470994 ns/iter (± 5608) 1.10
es/full/base/fixer 22784 ns/iter (± 40) 18145 ns/iter (± 70) 1.26
es/full/base/resolver_and_hygiene 85276 ns/iter (± 196) 76326 ns/iter (± 228) 1.12
serialization of serde 123 ns/iter (± 0) 120 ns/iter (± 0) 1.02
css/minify/libraries/bootstrap 27059758 ns/iter (± 66208) 23455737 ns/iter (± 637161) 1.15
css/visitor/compare/clone 2150048 ns/iter (± 10158) 1655113 ns/iter (± 1826) 1.30
css/visitor/compare/visit_mut_span 2310912 ns/iter (± 9945) 1786422 ns/iter (± 4848) 1.29
css/visitor/compare/visit_mut_span_panic 2362443 ns/iter (± 6013) 1847906 ns/iter (± 2919) 1.28
css/visitor/compare/fold_span 3079783 ns/iter (± 15778) 2547376 ns/iter (± 13456) 1.21
css/visitor/compare/fold_span_panic 3244443 ns/iter (± 15525) 2745844 ns/iter (± 5737) 1.18
css/lexer/bootstrap_5_1_3 5155004 ns/iter (± 11337) 4602140 ns/iter (± 7785) 1.12
css/lexer/foundation_6_7_4 4339395 ns/iter (± 6925) 3800828 ns/iter (± 2267) 1.14
css/lexer/tailwind_3_1_1 823373 ns/iter (± 1489) 721822 ns/iter (± 240) 1.14
css/parser/bootstrap_5_1_3 20862351 ns/iter (± 172241) 18139988 ns/iter (± 33128) 1.15
css/parser/foundation_6_7_4 16634428 ns/iter (± 97866) 14534459 ns/iter (± 14439) 1.14
css/parser/tailwind_3_1_1 3213371 ns/iter (± 9824) 2812738 ns/iter (± 6599) 1.14
es/codegen/colors 719366 ns/iter (± 392400) 731793 ns/iter (± 399631) 0.98
es/codegen/large 3130320 ns/iter (± 1632149) 2967181 ns/iter (± 1570728) 1.05
es/codegen/with-parser/colors 49055 ns/iter (± 131) 42455 ns/iter (± 483) 1.16
es/codegen/with-parser/large 514854 ns/iter (± 2442) 467789 ns/iter (± 952) 1.10
es/minify/libraries/antd 1335818071 ns/iter (± 18283158) 1068277678 ns/iter (± 12141330) 1.25
es/minify/libraries/d3 254745640 ns/iter (± 2488727) 216199402 ns/iter (± 856330) 1.18
es/minify/libraries/echarts 1038812099 ns/iter (± 7384153) 899760060 ns/iter (± 12089003) 1.15
es/minify/libraries/jquery 81054736 ns/iter (± 529968) 68544217 ns/iter (± 169476) 1.18
es/minify/libraries/lodash 96397886 ns/iter (± 476427) 79334568 ns/iter (± 147507) 1.22
es/minify/libraries/moment 46818148 ns/iter (± 316547) 40126144 ns/iter (± 85408) 1.17
es/minify/libraries/react 17400953 ns/iter (± 66227) 14787124 ns/iter (± 26677) 1.18
es/minify/libraries/terser 209789610 ns/iter (± 1243103) 173773619 ns/iter (± 415548) 1.21
es/minify/libraries/three 361116934 ns/iter (± 4573149) 289083833 ns/iter (± 994951) 1.25
es/minify/libraries/typescript 2540256143 ns/iter (± 13666430) 2065376969 ns/iter (± 11957323) 1.23
es/minify/libraries/victory 546654288 ns/iter (± 11141784) 439328203 ns/iter (± 2204879) 1.24
es/minify/libraries/vue 119683370 ns/iter (± 569315) 98782254 ns/iter (± 244102) 1.21
es/visitor/compare/clone 2331502 ns/iter (± 10396) 2001303 ns/iter (± 2226) 1.16
es/visitor/compare/visit_mut_span 2674041 ns/iter (± 14998) 2341013 ns/iter (± 3747) 1.14
es/visitor/compare/visit_mut_span_panic 2706666 ns/iter (± 19904) 2379960 ns/iter (± 3966) 1.14
es/visitor/compare/fold_span 3750470 ns/iter (± 13921) 3412570 ns/iter (± 5991) 1.10
es/visitor/compare/fold_span_panic 3905145 ns/iter (± 15817) 3566318 ns/iter (± 7728) 1.10
es/lexer/colors 13085 ns/iter (± 56) 11435 ns/iter (± 31) 1.14
es/lexer/angular 6395658 ns/iter (± 28419) 5685602 ns/iter (± 8556) 1.12
es/lexer/backbone 789559 ns/iter (± 4335) 732391 ns/iter (± 2208) 1.08
es/lexer/jquery 4434699 ns/iter (± 19766) 4134151 ns/iter (± 2130) 1.07
es/lexer/jquery mobile 6905263 ns/iter (± 25166) 6392804 ns/iter (± 16435) 1.08
es/lexer/mootools 3470539 ns/iter (± 21668) 3264378 ns/iter (± 2499) 1.06
es/lexer/underscore 652472 ns/iter (± 3241) 603175 ns/iter (± 1643) 1.08
es/lexer/three 20802697 ns/iter (± 157677) 19511606 ns/iter (± 29786) 1.07
es/lexer/yui 3868334 ns/iter (± 34746) 3618225 ns/iter (± 44121) 1.07
es/parser/colors 28968 ns/iter (± 86) 25483 ns/iter (± 42) 1.14
es/parser/angular 14948586 ns/iter (± 73470) 12993328 ns/iter (± 65723) 1.15
es/parser/backbone 2180632 ns/iter (± 16973) 1935655 ns/iter (± 16041) 1.13
es/parser/jquery 11795647 ns/iter (± 104709) 10494210 ns/iter (± 44977) 1.12
es/parser/jquery mobile 18193824 ns/iter (± 87675) 16136192 ns/iter (± 36550) 1.13
es/parser/mootools 8979917 ns/iter (± 44087) 8121174 ns/iter (± 21184) 1.11
es/parser/underscore 1840455 ns/iter (± 9537) 1661201 ns/iter (± 15305) 1.11
es/parser/three 52880067 ns/iter (± 1179787) 45454392 ns/iter (± 345635) 1.16
es/parser/yui 9025134 ns/iter (± 54456) 8032569 ns/iter (± 56563) 1.12
es/preset-env/usage/builtin_type 140810 ns/iter (± 34848) 128431 ns/iter (± 33700) 1.10
es/preset-env/usage/property 19912 ns/iter (± 75) 15182 ns/iter (± 78) 1.31
es/resolver/typescript 110480161 ns/iter (± 2816318) 88521457 ns/iter (± 765215) 1.25
es/fixer/typescript 79712492 ns/iter (± 2930871) 64631850 ns/iter (± 1785161) 1.23
es/hygiene/typescript 168936640 ns/iter (± 678320) 130646629 ns/iter (± 922969) 1.29
es/resolver_with_hygiene/typescript 312770774 ns/iter (± 1394239) 232108883 ns/iter (± 1011361) 1.35
es/visitor/base-perf/module_clone 80356 ns/iter (± 258) 59115 ns/iter (± 233) 1.36
es/visitor/base-perf/fold_empty 90329 ns/iter (± 353) 62387 ns/iter (± 134) 1.45
es/visitor/base-perf/fold_noop_impl_all 90390 ns/iter (± 470) 62742 ns/iter (± 310) 1.44
es/visitor/base-perf/fold_noop_impl_vec 90479 ns/iter (± 348) 63139 ns/iter (± 458) 1.43
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 51 ns/iter (± 0) 1.10
es/visitor/base-perf/boxing_unboxed_clone 42 ns/iter (± 0) 36 ns/iter (± 0) 1.17
es/visitor/base-perf/boxing_boxed 101 ns/iter (± 0) 111 ns/iter (± 0) 0.91
es/visitor/base-perf/boxing_unboxed 77 ns/iter (± 0) 76 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 3543 ns/iter (± 46) 2563 ns/iter (± 10) 1.38
es/base/parallel/resolver/typescript 6304485302 ns/iter (± 548189359) 3903648015 ns/iter (± 262981242) 1.62
es/base/parallel/hygiene/typescript 2011060398 ns/iter (± 32773119) 1408726643 ns/iter (± 15029940) 1.43
misc/visitors/time-complexity/time 5 106 ns/iter (± 0) 104 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 10 341 ns/iter (± 0) 308 ns/iter (± 0) 1.11
misc/visitors/time-complexity/time 15 709 ns/iter (± 0) 542 ns/iter (± 6) 1.31
misc/visitors/time-complexity/time 20 1325 ns/iter (± 11) 1116 ns/iter (± 18) 1.19
misc/visitors/time-complexity/time 40 6998 ns/iter (± 18) 3688 ns/iter (± 39) 1.90
misc/visitors/time-complexity/time 60 17807 ns/iter (± 39) 7675 ns/iter (± 11) 2.32
es/full-target/es2016 253127 ns/iter (± 499) 226589 ns/iter (± 885) 1.12
es/full-target/es2017 246128 ns/iter (± 377) 215630 ns/iter (± 703) 1.14
es/full-target/es2018 235224 ns/iter (± 207) 203566 ns/iter (± 662) 1.16
es2020_nullish_coalescing 93592 ns/iter (± 417) 67294 ns/iter (± 481) 1.39
es2020_optional_chaining 124346 ns/iter (± 218) 96848 ns/iter (± 262) 1.28
es2022_class_properties 148710 ns/iter (± 222) 116398 ns/iter (± 349) 1.28
es2018_object_rest_spread 96748 ns/iter (± 216) 73237 ns/iter (± 232) 1.32
es2019_optional_catch_binding 85332 ns/iter (± 183) 62758 ns/iter (± 192) 1.36
es2017_async_to_generator 86257 ns/iter (± 209) 62866 ns/iter (± 241) 1.37
es2016_exponentiation 90362 ns/iter (± 241) 66954 ns/iter (± 264) 1.35
es2015_arrow 93980 ns/iter (± 130) 68365 ns/iter (± 389) 1.37
es2015_block_scoped_fn 92394 ns/iter (± 176) 66518 ns/iter (± 294) 1.39
es2015_block_scoping 170393 ns/iter (± 285) 119019 ns/iter (± 475) 1.43

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

Please # to comment.