phpstan-doctrine icon indicating copy to clipboard operation
phpstan-doctrine copied to clipboard

Internal Error : The class ... was not found in the chain configured namespaces

Open amalricBzh opened this issue 1 year ago • 8 comments

Bug report

With lastest Phpstan version, on an up-to-date Symfony 6.2/PHP 8.1 project, I run: php -d memory_limit=-1 vendor/bin/phpstan analyse src --level=5 -v

It says me : Post the following stack trace to https://github.com/phpstan/phpstan/issues/new?template=Bug_report.md:

So this is the stacktrace:

Internal error: Internal error: The class 'App\Entity\Spip\AuteurLien' was not found in the chain configured namespaces App\Entity\Tud in file /var/www/src/Repository/Spip/AuteurLienRepository.php

     Post the following stack trace to https://github.com/phpstan/phpstan/issues/new?template=Bug_report.md:
     #0 /var/www/vendor/doctrine/persistence/src/Persistence/Mapping/Driver/MappingDriverChain.php(89): Doctrine\Persistence\Mapping\MappingException::classNotFoundInNamespaces('App\\Entity\\Spip...', Array)
     phpstan/phpstan#1 /var/www/vendor/doctrine/doctrine-bundle/Mapping/MappingDriver.php(42): Doctrine\Persistence\Mapping\Driver\MappingDriverChain->loadMetadataForClass('App\\Entity\\Spip...',
     Object(Doctrine\ORM\Mapping\ClassMetadata))
     phpstan/phpstan#2 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(132): Doctrine\Bundle\DoctrineBundle\Mapping\MappingDriver->loadMetadataForClass('App\\Entity\\Spip...',
     Object(Doctrine\ORM\Mapping\ClassMetadata))
     phpstan/phpstan#3 /var/www/vendor/doctrine/doctrine-bundle/Mapping/ClassMetadataFactory.php(18): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array)
     phpstan/phpstan#4 /var/www/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(343):
     Doctrine\Bundle\DoctrineBundle\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array)
     phpstan/phpstan#5 /var/www/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(207): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('App\\Entity\\Spip...')
     phpstan/phpstan#6 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('App\\Entity\\Spip...')
     phpstan/phpstan#7 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1782): Doctrine\ORM\EntityManager->getClassMetadata('App\\Entity\\Spip...')
     phpstan/phpstan#8 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1620): Doctrine\ORM\Query\Parser->RangeVariableDeclaration()
     phpstan/phpstan#9 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1350): Doctrine\ORM\Query\Parser->IdentificationVariableDeclaration()
     phpstan/phpstan#10 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(880): Doctrine\ORM\Query\Parser->FromClause()
     phpstan/phpstan#11 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(849): Doctrine\ORM\Query\Parser->SelectStatement()
     phpstan/phpstan#12 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(256): Doctrine\ORM\Query\Parser->QueryLanguage()
     phpstan/phpstan#13 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(356): Doctrine\ORM\Query\Parser->getAST()
     phpstan/phpstan#14 /var/www/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/Query/QueryResultTypeWalker.php(119): Doctrine\ORM\Query\Parser->parse()
     phpstan/phpstan#15 /var/www/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/QueryBuilder/QueryBuilderGetQueryDynamicReturnTypeExtension.php(164):
     PHPStan\Type\Doctrine\Query\QueryResultTypeWalker::walk(Object(Doctrine\ORM\Query), Object(PHPStan\Type\Doctrine\Query\QueryResultTypeBuilder), Object(PHPStan\Type\Doctrine\DescriptorRegistry))
     phpstan/phpstan#16 /var/www/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/QueryBuilder/QueryBuilderGetQueryDynamicReturnTypeExtension.php(147):
     PHPStan\Type\Doctrine\QueryBuilder\QueryBuilderGetQueryDynamicReturnTypeExtension->getQueryType('SELECT a FROM A...')
     phpstan/phpstan#17 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(3344):
     PHPStan\Type\Doctrine\QueryBuilder\QueryBuilderGetQueryDynamicReturnTypeExtension->getTypeFromMethodCall(Object(PHPStan\Reflection\ResolvedMethodReflection), Object(PhpParser\Node\Expr\MethodCall),
     Object(PHPStan\Analyser\MutatingScope))
     phpstan/phpstan#18 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1333):
     PHPStan\Analyser\MutatingScope->methodCallReturnType(Object(PHPStan\Type\Doctrine\QueryBuilder\BranchingQueryBuilderType), 'getQuery', Object(PhpParser\Node\Expr\MethodCall))
     phpstan/phpstan#19 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1339): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()
     phpstan/phpstan#20 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(556): PHPStan\Analyser\MutatingScope->resolveType('$this->createQu...', Object(PhpParser\Node\Expr\MethodCall))
     phpstan/phpstan#21 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1333): PHPStan\Analyser\MutatingScope->getType(Object(PhpParser\Node\Expr\MethodCall))
     phpstan/phpstan#22 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1339): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()
     phpstan/phpstan#23 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(556): PHPStan\Analyser\MutatingScope->resolveType('$this->createQu...', Object(PhpParser\Node\Expr\MethodCall))
     phpstan/phpstan#24 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Rules/FunctionReturnTypeCheck.php(53): PHPStan\Analyser\MutatingScope->getType(Object(PhpParser\Node\Expr\MethodCall))
     phpstan/phpstan#25 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Methods/ReturnTypeRule.php(43): PHPStan\Rules\FunctionReturnTypeCheck->checkReturnType(Object(PHPStan\Analyser\MutatingScope),
     Object(PHPStan\Type\ArrayType), Object(PhpParser\Node\Expr\MethodCall), Object(PhpParser\Node\Stmt\Return_), 'Method App\\Repo...', 'Method App\\Repo...', 'Method App\\Repo...', 'Method App\\Repo...', false)
     phpstan/phpstan#26 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(106): PHPStan\Rules\Methods\ReturnTypeRule->processNode(Object(PhpParser\Node\Stmt\Return_),
     Object(PHPStan\Analyser\MutatingScope))
     phpstan/phpstan#27 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Node/ClassStatementsGatherer.php(98): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}(Object(PhpParser\Node\Stmt\Return_),
     Object(PHPStan\Analyser\MutatingScope))
     phpstan/phpstan#28 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(508): PHPStan\Node\ClassStatementsGatherer->__invoke(Object(PhpParser\Node\Stmt\Return_),
     Object(PHPStan\Analyser\MutatingScope))
     phpstan/phpstan#29 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(417): PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}(Object(PhpParser\Node\Stmt\Return_),
     Object(PHPStan\Analyser\MutatingScope))
     phpstan/phpstan#30 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(362): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Return_),
     Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#31 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(523): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\ClassMethod), Array,
     Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#32 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(362): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\ClassMethod),
     Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#33 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(601): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\Class_), Array,
     Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#34 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(362): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Class_),
     Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#35 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(573): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\Namespace_), Array,
     Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#36 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(331): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Namespace_),
     Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     phpstan/phpstan#37 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(175): PHPStan\Analyser\NodeScopeResolver->processNodes(Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure))
     phpstan/phpstan#38 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(130): PHPStan\Analyser\FileAnalyser->analyseFile('/var/www/src/Re...', Array, Object(PHPStan\Rules\LazyRegistry),
     Object(PHPStan\Collectors\Registry), NULL)
     phpstan/phpstan#39 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): PHPStan\Command\WorkerCommand->PHPStan\Command\{closure}(Array)
     phpstan/phpstan#40 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(110): _PHPStan_53d0d2174\Evenement\EventEmitter->emit('data', Array)
     phpstan/phpstan#41 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): _PHPStan_53d0d2174\Clue\React\NDJson\Decoder->handleData(Array)
     phpstan/phpstan#42 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/Util.php(62): _PHPStan_53d0d2174\Evenement\EventEmitter->emit('data', Array)
     phpstan/phpstan#43 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
     _PHPStan_53d0d2174\React\Stream\Util::_PHPStan_53d0d2174\React\Stream\{closure}('{"action":"anal...')
     phpstan/phpstan#44 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(154): _PHPStan_53d0d2174\Evenement\EventEmitter->emit('data', Array)
     phpstan/phpstan#45 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201): _PHPStan_53d0d2174\React\Stream\DuplexResourceStream->handleData(Resource id phpstan/phpstan#3647)
     phpstan/phpstan#46 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173): _PHPStan_53d0d2174\React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
     phpstan/phpstan#47 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(96): _PHPStan_53d0d2174\React\EventLoop\StreamSelectLoop->run()
     phpstan/phpstan#48 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259):
     PHPStan\Command\WorkerCommand->execute(Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
     phpstan/phpstan#49 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(870):
     _PHPStan_53d0d2174\Symfony\Component\Console\Command\Command->run(Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
     phpstan/phpstan#50 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(261): _PHPStan_53d0d2174\Symfony\Component\Console\Application->doRunCommand(Object(PHPStan\Command\WorkerCommand),
     Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
     phpstan/phpstan#51 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157):
     _PHPStan_53d0d2174\Symfony\Component\Console\Application->doRun(Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
     phpstan/phpstan#52 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(124): _PHPStan_53d0d2174\Symfony\Component\Console\Application->run()
     phpstan/phpstan#53 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(125): _PHPStan_53d0d2174\{closure}()
     phpstan/phpstan#54 /var/www/vendor/phpstan/phpstan/phpstan(8): require('phar:///var/www...')
     phpstan/phpstan#55 /var/www/vendor/bin/phpstan(120): include('/var/www/vendor...')
     phpstan/phpstan#56 {main}

My doctrine conf:

    orm:
        auto_generate_proxy_classes: true
        default_entity_manager: default
        entity_managers:
            default:
                connection: tud
                mappings:
                    Tud:
                        is_bundle: false
                        dir: '%kernel.project_dir%/src/Entity/Tud'
                        prefix: 'App\Entity\Tud'
                        alias: Tud
                naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
            spip:
                connection: spip
                mappings:
                    Spip:
                        is_bundle: false
                        dir: '%kernel.project_dir%/src/Entity/Spip'
                        prefix: 'App\Entity\Spip'
                        alias: Spip
                naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware

Code snippet that reproduces the problem

The clas AuteurLien is very simple and never reference to namespace App\Entity\Tud:

<?php

namespace App\Entity\Spip;

use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity(repositoryClass: \App\Repository\Spip\AuteurLienRepository::class, readOnly: true)]
#[ORM\Table(name: 'spip_auteurs_liens')]
class AuteurLien
{
    #[ORM\Id]
    #[ORM\Column(name: 'id_auteur', type: 'integer')]
    private readonly int $idAuteur;
    #[ORM\Column(name: 'id_objet', type: 'integer')]
    private readonly int $idObjet;
    #[ORM\Column(type: 'string')]
    private readonly string $objet;

    public function __construct()
    {
        $this->idAuteur = 0;
        $this->idObjet = 0;
        $this->objet = '';
    }

    public function getIdAuteur(): int
    {
        return $this->idAuteur;
    }

    public function getIdObjet(): int
    {
        return $this->idObjet;
    }

    public function getObjet(): string
    {
        return $this->objet;
    }
}

amalricBzh avatar Apr 01 '23 19:04 amalricBzh