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

Most upvoted comments

I’m on it, thanks for report 👍