Open
Description
Versions:
- ide-helper Version: 3.2.2
- Laravel Version: 11.34.2
- PHP Version: 8.3.14
Description:
I had Expected type 'App\Models\BalanceActivity'. Found 'Illuminate\Database\TReturn'
kind of IDE errors after I upgrade my dependencies minor versions.
/**
* @param array<string, mixed> $data
* @param array<string, float> $balanceData
*/
public function create(array $data, array $balanceData): BalanceActivity
{
return DB::transaction(function () use ($data, $balanceData) {
return $this->unsafeCreate($data, $balanceData);
}, 1);
}
Same happens if I add return type hint to DB::transaction parameter:
/**
* @param array<string, mixed> $data
* @param array<string, float> $balanceData
*/
public function create(array $data, array $balanceData): BalanceActivity
{
return DB::transaction(function () use ($data, $balanceData): BalanceActivity {
return $this->unsafeCreate($data, $balanceData);
}, 1);
}
Signature for unsafeCreate method:
public function unsafeCreate(array $data, array $balanceData): BalanceActivity
I was not sure about the problem is about Intellephense or Laravel or ide-helper then I tried changing the _ide_helper.php
file. Notice the return line in docblock.
Before:
/**
*
*
* @template TReturn of mixed
*
* Execute a Closure within a transaction.
* @param (\Closure(static): TReturn) $callback
* @param int $attempts
* @return \Illuminate\Database\TReturn
* @throws \Throwable
* @static
*/ public static function transaction($callback, $attempts = 1)
{ //Method inherited from \Illuminate\Database\Connection
/** @var \Illuminate\Database\PostgresConnection $instance */
return $instance->transaction($callback, $attempts);
}
After:
/**
*
*
* @template TReturn of mixed
*
* Execute a Closure within a transaction.
* @param (\Closure(static): TReturn) $callback
* @param int $attempts
* @return TReturn
* @throws \Throwable
* @static
*/ public static function transaction($callback, $attempts = 1)
{ //Method inherited from \Illuminate\Database\Connection
/** @var \Illuminate\Database\PostgresConnection $instance */
return $instance->transaction($callback, $attempts);
}
All the issues are gone now. I was planning to open a PR but could not find how this code is generated.