nextras / orm-phpstan

PHPStan extension for Nextras Orm
https://nextras.org/orm
MIT License
11 stars 6 forks source link

Broken with latest PHPStan #16

Closed stpnkcrk closed 4 years ago

stpnkcrk commented 4 years ago

After upgrading to latest PHPStan (currently 0.12.29), the extension is broken. I suspect it's because of the reflection change which happened in PHPStan (https://phpstan.org/blog/zero-config-analysis-with-static-reflection). If extension is removed, PHPStan proceeds with analysis and (correctly) reports errors based on not knowing context of Nextras\Orm.

Example of Stack trace thrown by --debug switch.

Stack trace:
#0 C:\WebServer\WebRoot\project\vendor\nextras\orm-phpstan\src\Types\RepositoryReturnTypeExtension.php(75): ReflectionClass->__construct('App\\Model\\Files...')
#1 phar://C:/WebServer/WebRoot/project/vendor/phpstan/phpstan/phpstan/src/Analyser/MutatingScope.php(2505): Nextras\OrmPhpStan\Types\RepositoryReturnTypeExtension->getTypeFromMethodCall(Object(PHPStan\Reflection\ObjectTypeMethodReflection), Object(PhpParser\Node\Expr\MethodCall), Object(PHPStan\Analyser\MutatingScope))
#2 phar://C:/WebServer/WebRoot/project/vendor/phpstan/phpstan/phpstan/src/Analyser/MutatingScope.php(1176): PHPStan\Analyser\MutatingScope->methodCallReturnType(Object(PHPStan\Type\ObjectType), Object(PHPStan\Type\ObjectType), 'persistAndFlush', Object(PhpParser\Node\Expr\MethodCall))
#3 phar://C:/WebServer/WebR in C:\WebServer\WebRoot\project\vendor\nextras\orm-phpstan\src\Types\RepositoryReturnTypeExtension.php on line 75
Fatal error: Uncaught ReflectionException: Class App\Model\Files\FileRepository does not exist in C:\WebServer\WebRoot\project\vendor\nextras\orm-phpstan\src\Types\RepositoryReturnTypeExtension.php:75
Stack trace:
#0 C:\WebServer\WebRoot\project\vendor\nextras\orm-phpstan\src\Types\RepositoryReturnTypeExtension.php(75): ReflectionClass->__construct('App\\Model\\Files...')
#1 phar://C:/WebServer/WebRoot/project/vendor/phpstan/phpstan/phpstan/src/Analyser/MutatingScope.php(2505): Nextras\OrmPhpStan\Types\RepositoryReturnTypeExtension->getTypeFromMethodCall(Object(PHPStan\Reflection\ObjectTypeMethodReflection), Object(PhpParser\Node\Expr\MethodCall), Object(PHPStan\Analyser\MutatingScope))
#2 phar://C:/WebServer/WebRoot/project/vendor/phpstan/phpstan/phpstan/src/Analyser/MutatingScope.php(1176): PHPStan\Analyser\MutatingScope->methodCallReturnType(Object(PHPStan\Type\ObjectType), Object(PHPStan\Type\ObjectType), 'persistAndFlush', Object(PhpParser\Node\Expr\MethodCall))
#3 phar://C:/WebServer/WebR in C:\WebServer\WebRoot\project\vendor\nextras\orm-phpstan\src\Types\RepositoryReturnTypeExtension.php on line 75
stpnkcrk commented 4 years ago

Thank you very much!