From a1cbc19bbcc9714a5c53fb68bbe61490dbe38ec0 Mon Sep 17 00:00:00 2001 From: Tyson Andre Date: Sat, 15 Feb 2020 18:23:59 -0500 Subject: [PATCH] Fix parsing of static return types Support https://wiki.php.net/rfc/static_return_type --- src/Parser.php | 2 +- tests/cases/parser/staticReturnType1.php | 6 + tests/cases/parser/staticReturnType1.php.diag | 1 + tests/cases/parser/staticReturnType1.php.tree | 122 +++++++++++++++ tests/cases/parser/staticReturnType2.php | 6 + tests/cases/parser/staticReturnType2.php.diag | 32 ++++ tests/cases/parser/staticReturnType2.php.tree | 145 ++++++++++++++++++ 7 files changed, 313 insertions(+), 1 deletion(-) create mode 100644 tests/cases/parser/staticReturnType1.php create mode 100644 tests/cases/parser/staticReturnType1.php.diag create mode 100644 tests/cases/parser/staticReturnType1.php.tree create mode 100644 tests/cases/parser/staticReturnType2.php create mode 100644 tests/cases/parser/staticReturnType2.php.diag create mode 100644 tests/cases/parser/staticReturnType2.php.tree diff --git a/src/Parser.php b/src/Parser.php index c8984b7b..5d29b7cb 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -132,7 +132,7 @@ public function __construct() { [TokenKind::ArrayKeyword, TokenKind::CallableKeyword, TokenKind::BoolReservedWord, TokenKind::FloatReservedWord, TokenKind::IntReservedWord, TokenKind::StringReservedWord, TokenKind::ObjectReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord]; // TODO update spec - $this->returnTypeDeclarationTokens = \array_merge([TokenKind::VoidReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord], $this->parameterTypeDeclarationTokens); + $this->returnTypeDeclarationTokens = \array_merge([TokenKind::VoidReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord, TokenKind::StaticKeyword], $this->parameterTypeDeclarationTokens); } /** diff --git a/tests/cases/parser/staticReturnType1.php b/tests/cases/parser/staticReturnType1.php new file mode 100644 index 00000000..d6a0ef98 --- /dev/null +++ b/tests/cases/parser/staticReturnType1.php @@ -0,0 +1,6 @@ +