diff --git a/src/Node/CatchClause.php b/src/Node/CatchClause.php index ac71b64f..2784d116 100644 --- a/src/Node/CatchClause.php +++ b/src/Node/CatchClause.php @@ -24,7 +24,7 @@ class CatchClause extends Node { * TODO: In the next backwards incompatible release, replace qualifiedName with qualifiedNameList? */ public $otherQualifiedNameList; - /** @var Token */ + /** @var Token|null */ public $variableName; /** @var Token */ public $closeParen; diff --git a/src/Parser.php b/src/Parser.php index 722c447e..075c8f02 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -2249,7 +2249,7 @@ private function parseCatchClause($parentNode) { $qualifiedNameList = $this->parseQualifiedNameCatchList($catchClause)->children ?? []; $catchClause->qualifiedName = $qualifiedNameList[0] ?? null; // TODO generate missing token or error if null $catchClause->otherQualifiedNameList = array_slice($qualifiedNameList, 1); // TODO: Generate error if the name list has missing tokens - $catchClause->variableName = $this->eat1(TokenKind::VariableName); + $catchClause->variableName = $this->eatOptional1(TokenKind::VariableName); $catchClause->closeParen = $this->eat1(TokenKind::CloseParenToken); $catchClause->compoundStatement = $this->parseCompoundStatement($catchClause); diff --git a/tests/cases/parser/tryStatement10.php.diag b/tests/cases/parser/tryStatement10.php.diag index 4d7b4b56..0637a088 100644 --- a/tests/cases/parser/tryStatement10.php.diag +++ b/tests/cases/parser/tryStatement10.php.diag @@ -1,8 +1 @@ -[ - { - "kind": 0, - "message": "'VariableName' expected.", - "start": 22, - "length": 0 - } -] \ No newline at end of file +[] \ No newline at end of file diff --git a/tests/cases/parser/tryStatement10.php.tree b/tests/cases/parser/tryStatement10.php.tree index 420bd99f..bf879ad6 100644 --- a/tests/cases/parser/tryStatement10.php.tree +++ b/tests/cases/parser/tryStatement10.php.tree @@ -43,11 +43,7 @@ }, "qualifiedName": null, "otherQualifiedNameList": [], - "variableName": { - "error": "MissingToken", - "kind": "VariableName", - "textLength": 0 - }, + "variableName": null, "closeParen": { "kind": "CloseParenToken", "textLength": 1 diff --git a/tests/cases/parser/tryStatement13.php.diag b/tests/cases/parser/tryStatement13.php.diag index af385f5b..be775903 100644 --- a/tests/cases/parser/tryStatement13.php.diag +++ b/tests/cases/parser/tryStatement13.php.diag @@ -1,10 +1,4 @@ [ - { - "kind": 0, - "message": "'VariableName' expected.", - "start": 169, - "length": 0 - }, { "kind": 0, "message": "')' expected.", diff --git a/tests/cases/parser/tryStatement13.php.tree b/tests/cases/parser/tryStatement13.php.tree index 4ffc4bc9..42e811bf 100644 --- a/tests/cases/parser/tryStatement13.php.tree +++ b/tests/cases/parser/tryStatement13.php.tree @@ -43,11 +43,7 @@ }, "qualifiedName": null, "otherQualifiedNameList": [], - "variableName": { - "error": "MissingToken", - "kind": "VariableName", - "textLength": 0 - }, + "variableName": null, "closeParen": { "error": "MissingToken", "kind": "CloseParenToken", diff --git a/tests/cases/parser/tryStatement8.php.diag b/tests/cases/parser/tryStatement8.php.diag index 513e7607..6d37d1e0 100644 --- a/tests/cases/parser/tryStatement8.php.diag +++ b/tests/cases/parser/tryStatement8.php.diag @@ -5,12 +5,6 @@ "start": 21, "length": 0 }, - { - "kind": 0, - "message": "'VariableName' expected.", - "start": 21, - "length": 0 - }, { "kind": 0, "message": "')' expected.", diff --git a/tests/cases/parser/tryStatement8.php.tree b/tests/cases/parser/tryStatement8.php.tree index faf2c8c1..76d019e9 100644 --- a/tests/cases/parser/tryStatement8.php.tree +++ b/tests/cases/parser/tryStatement8.php.tree @@ -44,11 +44,7 @@ }, "qualifiedName": null, "otherQualifiedNameList": [], - "variableName": { - "error": "MissingToken", - "kind": "VariableName", - "textLength": 0 - }, + "variableName": null, "closeParen": { "error": "MissingToken", "kind": "CloseParenToken", diff --git a/tests/cases/parser/tryStatement9.php.diag b/tests/cases/parser/tryStatement9.php.diag index 59cd30be..0637a088 100644 --- a/tests/cases/parser/tryStatement9.php.diag +++ b/tests/cases/parser/tryStatement9.php.diag @@ -1,8 +1 @@ -[ - { - "kind": 0, - "message": "'VariableName' expected.", - "start": 27, - "length": 0 - } -] \ No newline at end of file +[] \ No newline at end of file diff --git a/tests/cases/parser/tryStatement9.php.tree b/tests/cases/parser/tryStatement9.php.tree index 4891bc60..b209092c 100644 --- a/tests/cases/parser/tryStatement9.php.tree +++ b/tests/cases/parser/tryStatement9.php.tree @@ -54,11 +54,7 @@ } }, "otherQualifiedNameList": [], - "variableName": { - "error": "MissingToken", - "kind": "VariableName", - "textLength": 0 - }, + "variableName": null, "closeParen": { "kind": "CloseParenToken", "textLength": 1