Skip to content

System error: "Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper::mapToPhpParserNode #7694

@neopheus

Description

@neopheus

Bug Report

Subject Details
Rector version v0.15.1 (invoke vendor/bin/rector --version)
{
  "totals": {
    "changed_files": 0,
    "removed_and_added_files_count": 0,
    "removed_node_count": 0,
    "errors": 1
  },
  "errors": [
    {
      "message": "System error: \"Rector\\PHPStanStaticTypeMapper\\PHPStanStaticTypeMapper::mapToPhpParserNode for PHPStan\\Type\\ConditionalTypeForParameter\"\nRun Rector with \"--debug\" option and post the report here: https://github.com/rectorphp/rector/issues/new",
      "file": "/var/www/var/demo/s9d6gcjkiepd2ol84f1o/rector_analyzed_file.php",
      "line": 65
    }
  ]
}
[ERROR] Could not process "/var/www/html/app/Http/Controllers/CommentController.php" file, due to:
         "System error: "Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper::mapToPhpParserNode for
         PHPStan\Type\ConditionalTypeForParameter"

         Stack trace:
         #0 vendor/rector/rector/packages/StaticTypeMapper/StaticTypeMapper.php(85):
         Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper->mapToPhpParserNode()
         #1
         vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector.php(88):
         Rector\StaticTypeMapper\StaticTypeMapper->mapPHPStanTypeToPhpParserNode()
         #2 vendor/rector/rector/src/Rector/AbstractRector.php(216):
         Rector\CodeQuality\Rector\ClassMethod\ReturnTypeFromStrictScalarReturnExprRector->refactor()
         #3 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(176):
         Rector\Core\Rector\AbstractRector->enterNode()
         #4 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):
         PhpParser\NodeTraverser->traverseArray()
         #5 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):
         PhpParser\NodeTraverser->traverseNode()
         #6 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):
         PhpParser\NodeTraverser->traverseArray()
         #7 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):
         PhpParser\NodeTraverser->traverseNode()
         #8 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(85):
         PhpParser\NodeTraverser->traverseArray()
         #9 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(42):
         PhpParser\NodeTraverser->traverse()
         #10 vendor/rector/rector/src/Application/FileProcessor.php(60):
         Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser->traverse()
         #11 vendor/rector/rector/src/Application/FileProcessor.php(64):
         Rector\Core\Application\FileProcessor->refactor()
         #12 vendor/rector/rector/src/Application/FileProcessor/PhpFileProcessor.php(133):
         Rector\Core\Application\FileProcessor->refactor()
         #13 vendor/rector/rector/src/Application/FileProcessor/PhpFileProcessor.php(101):
         Rector\Core\Application\FileProcessor\PhpFileProcessor->refactorNodesWithRectors()
         #14 vendor/rector/rector/packages/Parallel/WorkerRunner.php(98):
         Rector\Core\Application\FileProcessor\PhpFileProcessor->process()
         #15 vendor/rector/rector/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
         Rector\Parallel\WorkerRunner->Rector\Parallel\{closure}()
         #16 vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php(110):
         RectorPrefix202212\Evenement\EventEmitter->emit()
         #17 vendor/rector/rector/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
         RectorPrefix202212\Clue\React\NDJson\Decoder->handleData()
         #18 vendor/rector/rector/vendor/react/stream/src/Util.php(62):
         RectorPrefix202212\Evenement\EventEmitter->emit()
         #19 vendor/rector/rector/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
         RectorPrefix202212\React\Stream\Util::RectorPrefix202212\React\Stream\{closure}()
         #20 vendor/rector/rector/vendor/react/stream/src/DuplexResourceStream.php(154):
         RectorPrefix202212\Evenement\EventEmitter->emit()
         #21 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(201):
         RectorPrefix202212\React\Stream\DuplexResourceStream->handleData()
         #22 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(173):
         RectorPrefix202212\React\EventLoop\StreamSelectLoop->waitForStreamActivity()
         #23 vendor/rector/rector/src/Console/Command/WorkerCommand.php(63):
         RectorPrefix202212\React\EventLoop\StreamSelectLoop->run()
         #24 vendor/rector/rector/vendor/symfony/console/Command/Command.php(311):
         Rector\Core\Console\Command\WorkerCommand->execute()
         #25 vendor/rector/rector/vendor/symfony/console/Application.php(898):
         RectorPrefix202212\Symfony\Component\Console\Command\Command->run()
         #26 vendor/rector/rector/vendor/symfony/console/Application.php(319):
         RectorPrefix202212\Symfony\Component\Console\Application->doRunCommand()
         #27 vendor/rector/rector/src/Console/ConsoleApplication.php(49):
         RectorPrefix202212\Symfony\Component\Console\Application->doRun()
         #28 vendor/rector/rector/vendor/symfony/console/Application.php(206):
         Rector\Core\Console\ConsoleApplication->doRun()
         #29 vendor/rector/rector/bin/rector.php(128): RectorPrefix202212\Symfony\Component\Console\Application->run()
         #30 vendor/rector/rector/bin/rector(5): require_once('...')
         #31 vendor/bin/rector(120): include('...')
         #32 {main}". On line: 64

Minimal PHP Code Causing Issue

<?php

class MyTestController
{
    public function myFunction()
    {
        $username = 'xxxxxx';
        $password = 'yyyyyyy';
        return base64_encode(implode(':', [$username, $password]));
    }
}

Rector.php

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\Core\ValueObject\PhpVersion;
use Rector\Set\ValueObject\SetList;

return static function (RectorConfig $rectorConfig): void {

    $rectorConfig->phpVersion(PhpVersion::PHP_81);

    $rectorConfig->sets([
        SetList::CODE_QUALITY,

    ]);

};

https://getrector.org/demo/ad264bbe-5d73-4690-9edc-5bf6eba31a81

Expected Behaviour

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions