diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 16660a1bc357f..03970398ae5d1 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -128,6 +128,10 @@ jobs: echo SYMFONY_REQUIRE=">=$([ '${{ matrix.mode }}' = low-deps ] && echo 4.4 || echo $SYMFONY_VERSION)" >> $GITHUB_ENV [[ "${{ matrix.mode }}" = *-deps ]] && mv composer.json.phpunit composer.json || true + if [[ "${{ matrix.mode }}" = low-deps ]]; then + echo SYMFONY_PHPUNIT_REQUIRE="nikic/php-parser:^4.16" >> $GITHUB_ENV + fi + - name: Install dependencies run: | echo "::group::composer update" diff --git a/composer.json b/composer.json index 3a8174ca43aef..677f0b19c0526 100644 --- a/composer.json +++ b/composer.json @@ -140,6 +140,7 @@ "league/uri": "^6.5|^7.0", "masterminds/html5": "^2.7.2", "monolog/monolog": "^1.25.1|^2", + "nikic/php-parser": "^4.16|^5.0", "nyholm/psr7": "^1.0", "pda/pheanstalk": "^4.0", "php-http/discovery": "^1.15", diff --git a/src/Symfony/Component/Translation/Extractor/PhpAstExtractor.php b/src/Symfony/Component/Translation/Extractor/PhpAstExtractor.php index 4dd7f41b2dd91..3769fc27d91db 100644 --- a/src/Symfony/Component/Translation/Extractor/PhpAstExtractor.php +++ b/src/Symfony/Component/Translation/Extractor/PhpAstExtractor.php @@ -39,7 +39,11 @@ public function __construct( throw new \LogicException(sprintf('You cannot use "%s" as the "nikic/php-parser" package is not installed. Try running "composer require nikic/php-parser".', static::class)); } - $this->parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7); + if (method_exists(ParserFactory::class, 'createForHostVersion')) { + $this->parser = (new ParserFactory())->createForHostVersion(); + } else { + $this->parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7); + } } public function extract(iterable|string $resource, MessageCatalogue $catalogue): void diff --git a/src/Symfony/Component/Translation/Extractor/Visitor/ConstraintVisitor.php b/src/Symfony/Component/Translation/Extractor/Visitor/ConstraintVisitor.php index 33dc8437a7207..31403522fb468 100644 --- a/src/Symfony/Component/Translation/Extractor/Visitor/ConstraintVisitor.php +++ b/src/Symfony/Component/Translation/Extractor/Visitor/ConstraintVisitor.php @@ -42,7 +42,7 @@ public function enterNode(Node $node): ?Node return null; } - $parts = $className->parts; + $parts = $className->getParts(); $isConstraintClass = false; foreach ($parts as $part) { diff --git a/src/Symfony/Component/Translation/Extractor/Visitor/TranslatableMessageVisitor.php b/src/Symfony/Component/Translation/Extractor/Visitor/TranslatableMessageVisitor.php index c1505a135437d..9849fd2b373e9 100644 --- a/src/Symfony/Component/Translation/Extractor/Visitor/TranslatableMessageVisitor.php +++ b/src/Symfony/Component/Translation/Extractor/Visitor/TranslatableMessageVisitor.php @@ -34,7 +34,7 @@ public function enterNode(Node $node): ?Node return null; } - if (!\in_array('TranslatableMessage', $className->parts, true)) { + if (!\in_array('TranslatableMessage', $className->getParts(), true)) { return null; } diff --git a/src/Symfony/Component/Translation/composer.json b/src/Symfony/Component/Translation/composer.json index ee8e415dd5f00..4890ea82ac644 100644 --- a/src/Symfony/Component/Translation/composer.json +++ b/src/Symfony/Component/Translation/composer.json @@ -22,7 +22,7 @@ "symfony/translation-contracts": "^2.5|^3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.16|^5.0", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0",