Skip to content

Incorrect scope matching when arrow function used inside IF condition #2867

Closed
@snapshotpl

Description

@snapshotpl

I run phpcs with slevomat/coding-standard and I get error:

Fatal error: Uncaught PHP_CodeSniffer\Exceptions\RuntimeException: Undefined index: scope_closer in /var/www/vendor/slevomat/coding-standard/SlevomatCodingStandard/Helpers/UseStatementHelper.php on line 195 in /var/www/vendor/squizlabs/php_codesniffer/src/Runner.php:606
Stack trace:
#0 /var/www/vendor/slevomat/coding-standard/SlevomatCodingStandard/Helpers/UseStatementHelper.php(195): PHP_CodeSniffer\Runner->handleErrors(8, 'Undefined index...', '/var/www/vendor...', 195, Array)
#1 /var/www/vendor/slevomat/coding-standard/SlevomatCodingStandard/Helpers/UseStatementHelper.php(137): SlevomatCodingStandard\Helpers\UseStatementHelper::getUseStatementPointers(Object(PHP_CodeSniffer\Files\LocalFile), 0)
#2 /var/www/vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Namespaces/UselessAliasSniff.php(40): SlevomatCodingStandard\Helpers\UseStatementHelper::getFileUseStatements(Object(PHP_CodeSniffer\Files\LocalFile))
#3 /var/www/vendor/squizlabs/php_codesniffer/src/Files/File.php(496): SlevomatCodingStandard\Sniffs\Names in /var/www/vendor/squizlabs/php_codesniffer/src/Runner.php on line 606

This is code which causes error:

<?php

class MyClass
{
    public function __construct() {
        if (
            $this->valid(fn(): bool => 2 > 1)
        ) {

        }
    }

    private function valid(callable $callable): bool
    {
        return $callable();
    }
}

First reported here slevomat/coding-standard#902

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions