-
-
Notifications
You must be signed in to change notification settings - Fork 741
Closed
Labels
Description
Bug Report
Created a new issue from: #3286 (comment)
| Subject | Details |
|---|---|
| Rector version | Rector v0.7.22 down to v0.7.0; and dev-master@ed04aeb |
| Installed as | composer dependency |
The following file breaks rector 0.7.0 to 0.7.22:
<?php
namespace Some\Names;
/**
* @mixin \Illuminate\Database\Eloquent\Builder
*/
abstract class SomeClass
{
}This is in a Laravel 6.x install.
So the mixin should be this: https://github.com/laravel/framework/blob/6.x/src/Illuminate/Database/Eloquent/Builder.php
But it seems to break on any @mixin.
$ vendor/bin/rector process app/Some/Names/SomeClass.php --set php52 --dry-run --verbose
Rector v0.7.22
Config file: rector.yaml
[parsing] app/Some/Names/SomeClass.php
In AttributeAwareNodeFactory.php line 53:
[Rector\Core\Exception\ShouldNotHappenException]
Node "PHPStan\PhpDocParser\Ast\PhpDoc\MixinTagValueNode" was missed in "Rector\BetterPhpDocParser\Attributes\Ast\AttributeAwareNodeFactory::createFromNode". Generate it with: bin/rector sync-types
Exception trace:
at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/Attributes/Ast/AttributeAwareNodeFactory.php:53
Rector\BetterPhpDocParser\Attributes\Ast\AttributeAwareNodeFactory->createFromNode() at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php:233
Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseTagValue() at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php:186
Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseTag() at /some/path/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php:54
PHPStan\PhpDocParser\Parser\PhpDocParser->parseChild() at n/a:n/a
ReflectionMethod->invoke() at /some/path/vendor/symplify/package-builder/src/Reflection/PrivatesCaller.php:24
Symplify\PackageBuilder\Reflection\PrivatesCaller->callPrivateMethod() at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php:242
Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseChildAndStoreItsPositions() at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php:161
Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parse() at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfoFactory.php:116
Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory->parseTokensToPhpDocNode() at /some/path/vendor/rector/rector/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfoFactory.php:95
Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory->createFromNode() at /some/path/vendor/rector/rector/packages/node-type-resolver/src/NodeVisitor/PhpDocInfoNodeVisitor.php:29
Rector\NodeTypeResolver\NodeVisitor\PhpDocInfoNodeVisitor->enterNode() at /some/path/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:200
PhpParser\NodeTraverser->traverseArray() at /some/path/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /some/path/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /some/path/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:91
PhpParser\NodeTraverser->traverse() at /some/path/vendor/rector/rector/packages/node-type-resolver/src/NodeScopeAndMetadataDecorator.php:144
Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator->decorateNodesFromFile() at /some/path/vendor/rector/rector/src/Application/FileProcessor.php:166
Rector\Core\Application\FileProcessor->parseAndTraverseFileInfoToNodes() at /some/path/vendor/rector/rector/src/Application/FileProcessor.php:103
Rector\Core\Application\FileProcessor->parseFileInfoToLocalCache() at /some/path/vendor/rector/rector/src/Application/RectorApplication.php:127
Rector\Core\Application\RectorApplication->Rector\Core\Application\{closure}() at /some/path/vendor/rector/rector/src/Application/RectorApplication.php:196
Rector\Core\Application\RectorApplication->tryCatchWrapper() at /some/path/vendor/rector/rector/src/Application/RectorApplication.php:128
Rector\Core\Application\RectorApplication->runOnFileInfos() at /some/path/vendor/rector/rector/src/Console/Command/ProcessCommand.php:226
Rector\Core\Console\Command\ProcessCommand->execute() at /some/path/vendor/symfony/console/Command/Command.php:255
Symfony\Component\Console\Command\Command->run() at /some/path/vendor/rector/rector/src/Console/Command/AbstractCommand.php:34
Rector\Core\Console\Command\AbstractCommand->run() at /some/path/vendor/symfony/console/Application.php:1001
Symfony\Component\Console\Application->doRunCommand() at /some/path/vendor/symfony/console/Application.php:271
Symfony\Component\Console\Application->doRun() at /some/path/vendor/rector/rector/src/Console/Application.php:101
Rector\Core\Console\Application->doRun() at /some/path/vendor/symfony/console/Application.php:147
Symfony\Component\Console\Application->run() at /some/path/vendor/rector/rector/bin/rector:54
process [-n|--dry-run] [-a|--autoload-file AUTOLOAD-FILE] [--match-git-diff] [-o|--output-format [OUTPUT-FORMAT]] [--no-progress-bar] [--output-file OUTPUT-FILE] [--cache-debug] [--clear-cache] [--] [<source>...]
I note that sync-types does not exist:
$ vendor/bin/rector sync-types
Rector v0.7.22
Config file: rector.yaml
Command "sync-types" is not defined.
I also couldn't find it (apart from mentions) in this repository.
Minimal PHP Code Causing Issue
It doesn't break on the rector online demo: https://getrector.org/demo/e7de5d6e-23d2-4e5a-bca8-5bd1bc1c3c9e
Expected Behaviour
The parser knows about mixins.
Reactions are currently unavailable