Skip to content

Commit 14f0fbc

Browse files
authored
Merge pull request microsoft#322 from TysonAndre/noncapturing-catch
Support parsing php 8.0's non-capturing catch statement
2 parents e5c91d8 + f03a55c commit 14f0fbc

File tree

10 files changed

+8
-50
lines changed

10 files changed

+8
-50
lines changed

src/Node/CatchClause.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class CatchClause extends Node {
2424
* TODO: In the next backwards incompatible release, replace qualifiedName with qualifiedNameList?
2525
*/
2626
public $otherQualifiedNameList;
27-
/** @var Token */
27+
/** @var Token|null */
2828
public $variableName;
2929
/** @var Token */
3030
public $closeParen;

src/Parser.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2249,7 +2249,7 @@ private function parseCatchClause($parentNode) {
22492249
$qualifiedNameList = $this->parseQualifiedNameCatchList($catchClause)->children ?? [];
22502250
$catchClause->qualifiedName = $qualifiedNameList[0] ?? null; // TODO generate missing token or error if null
22512251
$catchClause->otherQualifiedNameList = array_slice($qualifiedNameList, 1); // TODO: Generate error if the name list has missing tokens
2252-
$catchClause->variableName = $this->eat1(TokenKind::VariableName);
2252+
$catchClause->variableName = $this->eatOptional1(TokenKind::VariableName);
22532253
$catchClause->closeParen = $this->eat1(TokenKind::CloseParenToken);
22542254
$catchClause->compoundStatement = $this->parseCompoundStatement($catchClause);
22552255

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
1-
[
2-
{
3-
"kind": 0,
4-
"message": "'VariableName' expected.",
5-
"start": 22,
6-
"length": 0
7-
}
8-
]
1+
[]

tests/cases/parser/tryStatement10.php.tree

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,7 @@
4343
},
4444
"qualifiedName": null,
4545
"otherQualifiedNameList": [],
46-
"variableName": {
47-
"error": "MissingToken",
48-
"kind": "VariableName",
49-
"textLength": 0
50-
},
46+
"variableName": null,
5147
"closeParen": {
5248
"kind": "CloseParenToken",
5349
"textLength": 1

tests/cases/parser/tryStatement13.php.diag

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
[
2-
{
3-
"kind": 0,
4-
"message": "'VariableName' expected.",
5-
"start": 169,
6-
"length": 0
7-
},
82
{
93
"kind": 0,
104
"message": "')' expected.",

tests/cases/parser/tryStatement13.php.tree

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,7 @@
4343
},
4444
"qualifiedName": null,
4545
"otherQualifiedNameList": [],
46-
"variableName": {
47-
"error": "MissingToken",
48-
"kind": "VariableName",
49-
"textLength": 0
50-
},
46+
"variableName": null,
5147
"closeParen": {
5248
"error": "MissingToken",
5349
"kind": "CloseParenToken",

tests/cases/parser/tryStatement8.php.diag

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@
55
"start": 21,
66
"length": 0
77
},
8-
{
9-
"kind": 0,
10-
"message": "'VariableName' expected.",
11-
"start": 21,
12-
"length": 0
13-
},
148
{
159
"kind": 0,
1610
"message": "')' expected.",

tests/cases/parser/tryStatement8.php.tree

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,7 @@
4444
},
4545
"qualifiedName": null,
4646
"otherQualifiedNameList": [],
47-
"variableName": {
48-
"error": "MissingToken",
49-
"kind": "VariableName",
50-
"textLength": 0
51-
},
47+
"variableName": null,
5248
"closeParen": {
5349
"error": "MissingToken",
5450
"kind": "CloseParenToken",
Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
1-
[
2-
{
3-
"kind": 0,
4-
"message": "'VariableName' expected.",
5-
"start": 27,
6-
"length": 0
7-
}
8-
]
1+
[]

tests/cases/parser/tryStatement9.php.tree

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,7 @@
5454
}
5555
},
5656
"otherQualifiedNameList": [],
57-
"variableName": {
58-
"error": "MissingToken",
59-
"kind": "VariableName",
60-
"textLength": 0
61-
},
57+
"variableName": null,
6258
"closeParen": {
6359
"kind": "CloseParenToken",
6460
"textLength": 1

0 commit comments

Comments
 (0)