Menu

← Back to callable.*

Error Identifier: callable.resultDiscarded

Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.

Code example #

<?php declare(strict_types = 1);

/**
 * @param callable(): int $callback
 * @phpstan-pure
 */
function execute(callable $callback): int
{
    return $callback();
}

/** @var callable(): int $fn */
$fn = static function (): int { return 1; };

$fn();

Why is it reported? #

The callable is invoked on a separate line and its return value is discarded. The callable has been determined to require its return value to be used (for example, because it is pure and its only purpose is to produce a return value). Calling it without using the result means the call has no meaningful effect.

How to fix it #

Use the return value of the callable:

 <?php declare(strict_types = 1);
 
 /** @var callable(): int $fn */
 $fn = static function (): int { return 1; };

-$fn();
+$result = $fn();

If the return value is intentionally not needed, use a (void) cast to signal the intent:

 <?php declare(strict_types = 1);
 
 /** @var callable(): int $fn */
 $fn = static function (): int { return 1; };

-$fn();
+(void) $fn();

Non-ignorable error #

This error cannot be ignored using @phpstan-ignore or the ignoreErrors configuration. Non-ignorable errors indicate code that would cause a crash or a fatal error at runtime, or a fundamental problem in the analysed code that must be addressed.

Rules that report this error #

  • PHPStan\Rules\Functions\CallToFunctionStatementWithNoDiscardRule [1]

Edit this page on GitHub

Theme
A
© 2026 PHPStan s.r.o.