Do not throw an error for optional binding pattern params in function declaration (#12085)

This commit is contained in:
Sosuke Suzuki 2020-09-21 23:14:13 +09:00 committed by GitHub
parent 18d13d0032
commit 3628c52867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 1 deletions

View File

@ -2526,7 +2526,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
// Allow type annotations inside of a parameter list. // Allow type annotations inside of a parameter list.
parseAssignableListItemTypes(param: N.Pattern) { parseAssignableListItemTypes(param: N.Pattern) {
if (this.eat(tt.question)) { if (this.eat(tt.question)) {
if (param.type !== "Identifier") { if (param.type !== "Identifier" && !this.state.isDeclareContext) {
this.raise(param.start, TSErrors.PatternIsOptional); this.raise(param.start, TSErrors.PatternIsOptional);
} }

View File

@ -0,0 +1 @@
declare function f([]?, {})

View File

@ -0,0 +1,38 @@
{
"type": "File",
"start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},
"program": {
"type": "Program",
"start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "TSDeclareFunction",
"start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},
"declare": true,
"id": {
"type": "Identifier",
"start":17,"end":18,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":18},"identifierName":"f"},
"name": "f"
},
"generator": false,
"async": false,
"params": [
{
"type": "ArrayPattern",
"start":19,"end":22,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":22}},
"elements": [],
"optional": true
},
{
"type": "ObjectPattern",
"start":24,"end":26,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":26}},
"properties": []
}
]
}
],
"directives": []
}
}