rector: Parsing error on `@var` in v0.9.12
| Subject | Details |
|---|---|
| Rector version | v0.9.12 |
| Installed as | prefixed |
Parsing this code:
<?php declare(strict_types=1);
namespace RectorBugTest;
class RectorBug
{
public function fails(\Symfony\Component\HttpFoundation\Request $request): void
{
$request->query->get('xxx');
}
}
results in this parsing error on @var annotation:
[parsing] src/RectorBug.php
PHP Fatal error: Uncaught Rector\Core\Exception\ShouldNotHappenException: Look at "Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser::parseTagValue()" on line 137 in <project>\vendor\rector\rector-prefixed\packages\better-php-doc-parser\src\PhpDocParser\BetterPhpDocParser.php:137
Stack trace:
#0 <project>\vendor\rector\rector-prefixed\packages\better-php-doc-parser\src\PhpDocParser\BetterPhpDocParser.php(128): Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseTagValue(Object(PHPStan\PhpDocParser\Parser\TokenIterator), '@var')
#1 <project>\vendor\phpstan\phpdoc-parser\src\Parser\PhpDocParser.php(53): Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseTag(Object(PHPStan\PhpDocParser\Parser\TokenIterator))
#2 <project>\vendor\phpstan\phpdoc-parser\src\Parser\PhpDocParser.php(40): PHPStan\PhpDocParser\Parser\PhpDocParser->parseChild(Object(PHPStan\PhpDocParser\Parser\TokenIterator))
#3 <project>\v in <project>\vendor\rector\rector-prefixed\packages\better-php-doc-parser\src\PhpDocParser\BetterPhpDocParser.php on line 137
Fatal error: Uncaught Rector\Core\Exception\ShouldNotHappenException: Look at "Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser::parseTagValue()" on line 137 in <project>\vendor\rector\rector-prefixed\packages\better-php-doc-parser\src\PhpDocParser\BetterPhpDocParser.php:137
Stack trace:
#0 <project>\vendor\rector\rector-prefixed\packages\better-php-doc-parser\src\PhpDocParser\BetterPhpDocParser.php(128): Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseTagValue(Object(PHPStan\PhpDocParser\Parser\TokenIterator), '@var')
#1 <project>\vendor\phpstan\phpdoc-parser\src\Parser\PhpDocParser.php(53): Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser->parseTag(Object(PHPStan\PhpDocParser\Parser\TokenIterator))
#2 <project>\vendor\phpstan\phpdoc-parser\src\Parser\PhpDocParser.php(40): PHPStan\PhpDocParser\Parser\PhpDocParser->parseChild(Object(PHPStan\PhpDocParser\Parser\TokenIterator))
#3 <project>\v in <project>\vendor\rector\rector-prefixed\packages\better-php-doc-parser\src\PhpDocParser\BetterPhpDocParser.php on line 137
I’m not sure what’s special about Symfony’s Request but I wasn’t able to reproduce the problem with a custom code.
Surprisingly, the error shows even here: https://getrector.org/demo/15c3fd41-9764-4f6d-8f3e-e9ccc36b252d
Different line numbers (180 vs 137) because of unprefixed vs prefixed version
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 1
- Comments: 15 (13 by maintainers)
Commits related to this issue
- Create a repro for rectorphp/rector#5267 — committed to vhenzl-archive/rector-issue-5267 by vhenzl 3 years ago
- Fixes #5267 — committed to rectorphp/rector by samsonasik 3 years ago
- Fixes #5267 — committed to rectorphp/rector by samsonasik 3 years ago
- Fixes #5267 — committed to rectorphp/rector by samsonasik 3 years ago
- [BetterPhpDocParser] Handle parseString() got ShouldNotHappenException (#5299) * Fixes #5267 * cs fix * use true for 3rd parameter is_a * try use method_exists * patch in BetterPhpDocPar... — committed to rectorphp/rector by samsonasik 3 years ago
- Updated Rector to commit b5f7a09fde1d6f9a22a877499c878bcdb553854b https://github.com/rectorphp/rector-src/commit/b5f7a09fde1d6f9a22a877499c878bcdb553854b [Php81] Skip increment/decrement on ReadOnly... — committed to rectorphp/rector by TomasVotruba 7 months ago
I’m on it, thanks for report 👍