diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eab4ee8..6916355 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - php-version: ['8.1', '8.2', '8.3', '8.4'] + php-version: ['8.1', '8.3'] steps: - name: Checkout code diff --git a/composer.json b/composer.json index b92d95e..cde7a32 100644 --- a/composer.json +++ b/composer.json @@ -14,8 +14,8 @@ } }, "require": { - "php": ">=8.0", - "nikic/php-parser": "^4.15", + "php": ">=8.1", + "nikic/php-parser": "^4.15 || ^5.0", "phpstan/phpdoc-parser": "^1.24", "symfony/console": "^6.0", "symfony/finder": "^6.0", diff --git a/src/Attributes/AttributeParser.php b/src/Attributes/AttributeParser.php index f282ceb..34797b6 100644 --- a/src/Attributes/AttributeParser.php +++ b/src/Attributes/AttributeParser.php @@ -133,6 +133,7 @@ private function evaluateExpression(Expr $expr, NameResolver $nameResolver): mix if ($expr instanceof Array_) { $result = []; foreach ($expr->items as $item) { + // @phpstan-ignore-next-line if ($item === null) { continue; } diff --git a/src/Parser.php b/src/Parser.php index 6b9a4d6..a051676 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -13,7 +13,14 @@ class Parser public function __construct() { - $this->parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7); + $factory = new ParserFactory(); + // @phpstan-ignore-next-line + if (method_exists($factory, 'createForNewestSupportedVersion')) { + $this->parser = $factory->createForNewestSupportedVersion(); + } else { + // @phpstan-ignore-next-line + $this->parser = $factory->create(ParserFactory::PREFER_PHP7); + } } /** diff --git a/tests/NameResolverTest.php b/tests/NameResolverTest.php index 2105086..15c1610 100644 --- a/tests/NameResolverTest.php +++ b/tests/NameResolverTest.php @@ -18,7 +18,12 @@ public function testResolveClassName() class UserController {} '; - $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7); + $factory = new ParserFactory(); + if (method_exists($factory, 'createForNewestSupportedVersion')) { + $parser = $factory->createForNewestSupportedVersion(); + } else { + $parser = $factory->create(ParserFactory::PREFER_PHP7); + } $stmts = $parser->parse($code); $resolver = new NameResolver();