-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
Closed
Description
Symfony version(s) affected
6.2
Description
The translation related console commands fail when updating to 6.2.
bin/console debug:translation en
bin/console translation:extract --force en
In CallLike.php line 36:
[AssertionError (1)]
assert(!$this->isFirstClassCallable())
How to reproduce
Install Symfony skeleton
symfony new translation-reproducer --version="6.2.*" --webapp
Run one of the commands
bin/console debug:translation en -vvv
bin/console translation:extract --force en -vvv
Possible Solution
I believe the fix could start at L66 in AbstractVisitor.php:
-$args = $node instanceof Node\Expr\CallLike ? $node->getArgs() : $node->args;
+$args = $node instanceof Node\Expr\CallLike && $node->isFirstClassCallable() === false ? $node->getArgs() : $node->args;
But this leads to the next error:
In AbstractVisitor.php line 70:
[ErrorException]
Warning: Undefined property: PhpParser\Node\VariadicPlaceholder::$name
Which again could be fixed by
-if (null !== $arg->name) {
+if (property_exists($arg, 'name') === false || null !== $arg->name) {
But this leads to a few new similar errors and soon a deadend at least for me, because I don't really understand what the code is supposed to do.
Additional Context
System info:
transrep git:(main) bin/console about
-------------------- ---------------------------------
Symfony
-------------------- ---------------------------------
Version 6.2.0
Long-Term Support No
End of maintenance 07/2023 (in +242 days)
End of life 07/2023 (in +242 days)
-------------------- ---------------------------------
Kernel
-------------------- ---------------------------------
Type App\Kernel
Environment dev
Debug true
Charset UTF-8
Cache directory ./var/cache/dev (7.7 MiB)
Build directory ./var/cache/dev (7.7 MiB)
Log directory ./var/log (26 KiB)
-------------------- ---------------------------------
PHP
-------------------- ---------------------------------
Version 8.1.13
Architecture 64 bits
Intl locale en_US_POSIX
Timezone UTC (2022-12-01T11:42:30+00:00)
OPcache true
APCu false
Xdebug false
-------------------- ---------------------------------
Stack traces:
transrep git:(main) bin/console translation:extract --force en -vvv
Translation Messages Extractor and Dumper
=========================================
// Generating "en" translation files for "default directory"
// Parsing templates...
In CallLike.php line 36:
[AssertionError (1)]
assert(!$this->isFirstClassCallable())
Exception trace:
at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php:36
assert() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php:36
PhpParser\Node\Expr\CallLike->getArgs() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/Visitor/AbstractVisitor.php:66
Symfony\Component\Translation\Extractor\Visitor\AbstractVisitor->hasNodeNamedArguments() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php:40
Symfony\Component\Translation\Extractor\Visitor\TransMethodVisitor->enterNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:123
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:91
PhpParser\NodeTraverser->traverse() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/PhpAstExtractor.php:56
Symfony\Component\Translation\Extractor\PhpAstExtractor->extract() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/ChainExtractor.php:48
Symfony\Component\Translation\Extractor\ChainExtractor->extract() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Command/TranslationUpdateCommand.php:395
Symfony\Bundle\FrameworkBundle\Command\TranslationUpdateCommand->extractMessages() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Command/TranslationUpdateCommand.php:200
Symfony\Bundle\FrameworkBundle\Command\TranslationUpdateCommand->execute() at /Users/gndk/dev/transrep/vendor/symfony/console/Command/Command.php:312
Symfony\Component\Console\Command\Command->run() at /Users/gndk/dev/transrep/vendor/symfony/console/Application.php:1038
Symfony\Component\Console\Application->doRunCommand() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Console/Application.php:88
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /Users/gndk/dev/transrep/vendor/symfony/console/Application.php:312
Symfony\Component\Console\Application->doRun() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Console/Application.php:77
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Users/gndk/dev/transrep/vendor/symfony/console/Application.php:168
Symfony\Component\Console\Application->run() at /Users/gndk/dev/transrep/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php:54
Symfony\Component\Runtime\Runner\Symfony\ConsoleApplicationRunner->run() at /Users/gndk/dev/transrep/vendor/autoload_runtime.php:29
require_once() at /Users/gndk/dev/transrep/bin/console:11
translation:extract [--prefix [PREFIX]] [--format [FORMAT]] [--dump-messages] [--force] [--clean] [--domain [DOMAIN]] [--sort [SORT]] [--as-tree [AS-TREE]] [--] <locale> [<bundle>]
transrep git:(main) bin/console debug:translation en -vvv
In CallLike.php line 36:
[AssertionError (1)]
assert(!$this->isFirstClassCallable())
Exception trace:
at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php:36
assert() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php:36
PhpParser\Node\Expr\CallLike->getArgs() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/Visitor/AbstractVisitor.php:66
Symfony\Component\Translation\Extractor\Visitor\AbstractVisitor->hasNodeNamedArguments() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php:40
Symfony\Component\Translation\Extractor\Visitor\TransMethodVisitor->enterNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:123
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /Users/gndk/dev/transrep/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:91
PhpParser\NodeTraverser->traverse() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/PhpAstExtractor.php:56
Symfony\Component\Translation\Extractor\PhpAstExtractor->extract() at /Users/gndk/dev/transrep/vendor/symfony/translation/Extractor/ChainExtractor.php:48
Symfony\Component\Translation\Extractor\ChainExtractor->extract() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Command/TranslationDebugCommand.php:346
Symfony\Bundle\FrameworkBundle\Command\TranslationDebugCommand->extractMessages() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Command/TranslationDebugCommand.php:170
Symfony\Bundle\FrameworkBundle\Command\TranslationDebugCommand->execute() at /Users/gndk/dev/transrep/vendor/symfony/console/Command/Command.php:312
Symfony\Component\Console\Command\Command->run() at /Users/gndk/dev/transrep/vendor/symfony/console/Application.php:1038
Symfony\Component\Console\Application->doRunCommand() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Console/Application.php:88
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /Users/gndk/dev/transrep/vendor/symfony/console/Application.php:312
Symfony\Component\Console\Application->doRun() at /Users/gndk/dev/transrep/vendor/symfony/framework-bundle/Console/Application.php:77
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Users/gndk/dev/transrep/vendor/symfony/console/Application.php:168
Symfony\Component\Console\Application->run() at /Users/gndk/dev/transrep/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php:54
Symfony\Component\Runtime\Runner\Symfony\ConsoleApplicationRunner->run() at /Users/gndk/dev/transrep/vendor/autoload_runtime.php:29
require_once() at /Users/gndk/dev/transrep/bin/console:11
debug:translation [--domain [DOMAIN]] [--only-missing] [--only-unused] [--all] [--] <locale> [<bundle>]