Skip to content

[PHP] CountOnNullRector cannot handle global scope #2402

@fsok

Description

@fsok
Subject Details
Rector version 0.6.x-dev@40b50a6
PHP version 7.4
Full Command bin/rector -c ../rector_test/rector_count_on_null.yaml process ../rector_test/src/count_on_null/count_on_null_fail.php --dry-run --debug

Current Behaviour

Rector 0.6.x-dev@40b50a6
Config file: ../rector_test/rector_count_on_null.yaml

before ../rector_test/src/count_on_null/count_on_null_fail.php
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /home/fsok/src/rector_test/src/count_on_null/count_on_null_fail.php on line 4
after ../rector_test/src/count_on_null/count_on_null_fail.php
[parsing] ../rector_test/src/count_on_null/count_on_null_fail.php
[refactoring] ../rector_test/src/count_on_null/count_on_null_fail.php
    [applying] Rector\Php71\Rector\FuncCall\CountOnNullRector
PHP Fatal error:  Uncaught TypeError: Return value of Rector\NodeTypeResolver\NodeTypeResolver::getScopeNode() must implement interface PhpParser\Node, null returned in /home/fsok/src/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:640
Stack trace:
#0 /home/fsok/src/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php(648): Rector\NodeTypeResolver\NodeTypeResolver->getScopeNode(Object(PhpParser\Node\Expr\Variable))
#1 /home/fsok/src/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php(608): Rector\NodeTypeResolver\NodeTypeResolver->getVariableUsages(Object(PhpParser\Node\Expr\Variable))
#2 /home/fsok/src/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php(265): Rector\NodeTypeResolver\NodeTypeResolver->correctPregMatchType(Object(PhpParser\Node\Expr\Variable), Object(PHPStan\Type\NullType))
#3 /home/fsok/src/rector/src/Rector/AbstractRector/NodeTypeResolverTrait.php(91): Rector\NodeTypeResolver\NodeTypeResolver->isCountableType(Object(PhpParser\Node\Expr\Variable))
#4 /home/fsok/src/rector/packages/Ph in /home/fsok/src/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php on line 640
#rector_count_on_null.yaml                                                                                                                             
services:
    Rector\Php71\Rector\FuncCall\CountOnNullRector: ~

Minimal PHP Code Causing Issue

<?php

$x = null;
count($x);

Expected Behaviour

CountOnNullRector should be applied successfully.

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