Skip to content

Commit ee87b7e

Browse files
committed
Conditional return type for SQLite3Result::fetchArray()
1 parent 28f6ffe commit ee87b7e

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

resources/functionMap.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10062,7 +10062,7 @@
1006210062
'SQLite3Result::__construct' => ['void'],
1006310063
'SQLite3Result::columnName' => ['string', 'column_number'=>'int'],
1006410064
'SQLite3Result::columnType' => ['int', 'column_number'=>'int'],
10065-
'SQLite3Result::fetchArray' => ['array|false', 'mode='=>'int'],
10065+
'SQLite3Result::fetchArray' => ['($mode is SQLITE3_NUM ? non-empty-list<mixed>|false : ($mode is SQLITE3_ASSOC ? non-empty-array<string,mixed>|false : non-empty-array<int|string,mixed>|false))', 'mode='=>'int'],
1006610066
'SQLite3Result::finalize' => ['bool'],
1006710067
'SQLite3Result::numColumns' => ['int'],
1006810068
'SQLite3Result::reset' => ['bool'],
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace Sqlite3ResultFetchArray;
4+
5+
use SQLite3Result;
6+
use function PHPStan\Testing\assertType;
7+
8+
class Foo
9+
{
10+
11+
public function fetchArrayDefault(SQLite3Result $result): void
12+
{
13+
assertType('non-empty-array<int|string, mixed>|false', $result->fetchArray());
14+
}
15+
16+
public function fetchArrayBoth(SQLite3Result $result): void
17+
{
18+
assertType('non-empty-array<int|string, mixed>|false', $result->fetchArray(SQLITE3_BOTH));
19+
}
20+
21+
public function fetchArrayNum(SQLite3Result $result): void
22+
{
23+
assertType('non-empty-list<mixed>|false', $result->fetchArray(SQLITE3_NUM));
24+
}
25+
26+
public function fetchArrayAssoc(SQLite3Result $result): void
27+
{
28+
assertType('non-empty-array<string, mixed>|false', $result->fetchArray(SQLITE3_ASSOC));
29+
}
30+
31+
}

0 commit comments

Comments
 (0)