Skip to content

Commit bfeb553

Browse files
committed
Fix failing tests
1 parent ce77fbf commit bfeb553

File tree

4 files changed

+36
-34
lines changed

4 files changed

+36
-34
lines changed

Diff for: stubs/arrayFunctions.stub

+14-12
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,13 @@ function uksort(array &$array, callable $callback): bool
5858
}
5959

6060
/**
61-
* @template T of array
62-
* @template U of array
63-
* @param T $one
64-
* @param U $two
65-
* @param callable(value-of<T>, value-of<U>): int $three
66-
* @return array<key-of<T>, value-of<T>>
61+
* @template TKey of array-key
62+
* @template TValue
63+
* @template UValue
64+
* @param array<TKey, TValue> $one
65+
* @param array<UValue> $two
66+
* @param callable(TValue, UValue): int $three
67+
* @return array<TKey, TValue>
6768
*/
6869
function array_udiff(
6970
array $one,
@@ -72,12 +73,13 @@ function array_udiff(
7273
): array {}
7374

7475
/**
75-
* @template T of array
76-
* @template U of array
77-
* @param T $one
78-
* @param U $two
79-
* @param callable(value-of<T>, value-of<U>): int $three
80-
* @return array<key-of<T>, value-of<T>>
76+
* @template TKey of array-key
77+
* @template TValue
78+
* @template UValue
79+
* @param array<TKey, TValue> $one
80+
* @param array<UValue> $two
81+
* @param callable(TValue, UValue): int $three
82+
* @return array<TKey, TValue>
8183
*/
8284
function array_uintersect(
8385
array $one,

Diff for: tests/PHPStan/Analyser/nsrt/array_udiff.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@
1515
*/
1616
function test(array $array1, array $array2, array $array3, array $list, array $nonEmptyArray, array $arrayShape1, array $arrayShape2): void
1717
{
18-
assertType('array<int|string, int>', array_udiff($array1, $array2, static function (mixed $a, mixed $b) {
18+
assertType('array<int>', array_udiff($array1, $array2, static function (mixed $a, mixed $b) {
1919
assertType('int', $a);
2020
assertType('string', $b);
2121

2222
return strcasecmp((string) $a, $b);
2323
}));
2424

25-
assertType('array<int|string, string>', array_udiff($array2, $array1, static function (mixed $a, mixed $b) {
25+
assertType('array<string>', array_udiff($array2, $array1, static function (mixed $a, mixed $b) {
2626
assertType('string', $a);
2727
assertType('int', $b);
2828

2929
return strcasecmp($a, (string) $b);
3030
}));
3131

32-
assertType('array<int|string, int>', array_udiff($array1, $array3, static function (mixed $a, mixed $b) {
32+
assertType('array<int>', array_udiff($array1, $array3, static function (mixed $a, mixed $b) {
3333
assertType('int', $a);
3434
assertType('int', $b);
3535

@@ -43,49 +43,49 @@ function test(array $array1, array $array2, array $array3, array $list, array $n
4343
return $a <=> $b;
4444
}));
4545

46-
assertType('array<int|string, int>', array_udiff($array1, $list, static function (mixed $a, mixed $b) {
46+
assertType('array<int>', array_udiff($array1, $list, static function (mixed $a, mixed $b) {
4747
assertType('int', $a);
4848
assertType('string', $b);
4949

5050
return strcasecmp((string) $a, $b);
5151
}));
5252

53-
assertType('array<int, string>', array_udiff($list, $array1, static function (mixed $a, mixed $b) {
53+
assertType('array<int<0, max>, string>', array_udiff($list, $array1, static function (mixed $a, mixed $b) {
5454
assertType('string', $a);
5555
assertType('int', $b);
5656

5757
return strcasecmp($a, (string) $b);
5858
}));
5959

60-
assertType('array<int|string, int>', array_udiff($nonEmptyArray, $array1, static function (mixed $a, mixed $b) {
60+
assertType('array<int>', array_udiff($nonEmptyArray, $array1, static function (mixed $a, mixed $b) {
6161
assertType('int', $a);
6262
assertType('int', $b);
6363

6464
return $a <=> $b;
6565
}));
6666

67-
assertType('array<int|string, int>', array_udiff($array1, $nonEmptyArray, static function (mixed $a, mixed $b) {
67+
assertType('array<int>', array_udiff($array1, $nonEmptyArray, static function (mixed $a, mixed $b) {
6868
assertType('int', $a);
6969
assertType('int', $b);
7070

7171
return $a <=> $b;
7272
}));
7373

74-
assertType('array<int|string, int>', array_udiff($array1, $arrayShape1, static function (mixed $a, mixed $b) {
74+
assertType('array<int>', array_udiff($array1, $arrayShape1, static function (mixed $a, mixed $b) {
7575
assertType('int', $a);
7676
assertType('int|string', $b);
7777

7878
return $a <=> $b;
7979
}));
8080

81-
assertType("array<'foo'|0, int|string>", array_udiff($arrayShape1, $array1, static function (mixed $a, mixed $b) {
81+
assertType("array<0|'foo', int|string>", array_udiff($arrayShape1, $array1, static function (mixed $a, mixed $b) {
8282
assertType('int|string', $a);
8383
assertType('int', $b);
8484

8585
return $a <=> $b;
8686
}));
8787

88-
assertType("array<'bar'|'foo', string>", array_udiff($arrayShape2, $array1, static function (mixed $a, mixed $b) {
88+
assertType("array<'bar'|'foo', int|string>", array_udiff($arrayShape2, $array1, static function (mixed $a, mixed $b) {
8989
assertType('int|string', $a);
9090
assertType('int', $b);
9191

Diff for: tests/PHPStan/Analyser/nsrt/array_uintersect.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@
1515
*/
1616
function test(array $array1, array $array2, array $array3, array $list, array $nonEmptyArray, array $arrayShape1, array $arrayShape2): void
1717
{
18-
assertType('array<int|string, int>', array_uintersect($array1, $array2, static function (mixed $a, mixed $b) {
18+
assertType('array<int>', array_uintersect($array1, $array2, static function (mixed $a, mixed $b) {
1919
assertType('int', $a);
2020
assertType('string', $b);
2121

2222
return strcasecmp((string) $a, $b);
2323
}));
2424

25-
assertType('array<int|string, string>', array_uintersect($array2, $array1, static function (mixed $a, mixed $b) {
25+
assertType('array<string>', array_uintersect($array2, $array1, static function (mixed $a, mixed $b) {
2626
assertType('string', $a);
2727
assertType('int', $b);
2828

2929
return strcasecmp($a, (string) $b);
3030
}));
3131

32-
assertType('array<int|string, int>', array_uintersect($array1, $array3, static function (mixed $a, mixed $b) {
32+
assertType('array<int>', array_uintersect($array1, $array3, static function (mixed $a, mixed $b) {
3333
assertType('int', $a);
3434
assertType('int', $b);
3535

@@ -43,49 +43,49 @@ function test(array $array1, array $array2, array $array3, array $list, array $n
4343
return $a <=> $b;
4444
}));
4545

46-
assertType('array<int|string, int>', array_uintersect($array1, $list, static function (mixed $a, mixed $b) {
46+
assertType('array<int>', array_uintersect($array1, $list, static function (mixed $a, mixed $b) {
4747
assertType('int', $a);
4848
assertType('string', $b);
4949

5050
return strcasecmp((string) $a, $b);
5151
}));
5252

53-
assertType('array<int, string>', array_uintersect($list, $array1, static function (mixed $a, mixed $b) {
53+
assertType('array<int<0, max>, string>', array_uintersect($list, $array1, static function (mixed $a, mixed $b) {
5454
assertType('string', $a);
5555
assertType('int', $b);
5656

5757
return strcasecmp($a, (string) $b);
5858
}));
5959

60-
assertType('array<int|string, int>', array_uintersect($nonEmptyArray, $array1, static function (mixed $a, mixed $b) {
60+
assertType('array<int>', array_uintersect($nonEmptyArray, $array1, static function (mixed $a, mixed $b) {
6161
assertType('int', $a);
6262
assertType('int', $b);
6363

6464
return $a <=> $b;
6565
}));
6666

67-
assertType('array<int|string, int>', array_uintersect($array1, $nonEmptyArray, static function (mixed $a, mixed $b) {
67+
assertType('array<int>', array_uintersect($array1, $nonEmptyArray, static function (mixed $a, mixed $b) {
6868
assertType('int', $a);
6969
assertType('int', $b);
7070

7171
return $a <=> $b;
7272
}));
7373

74-
assertType('array<int|string, int>', array_uintersect($array1, $arrayShape1, static function (mixed $a, mixed $b) {
74+
assertType('array<int>', array_uintersect($array1, $arrayShape1, static function (mixed $a, mixed $b) {
7575
assertType('int', $a);
7676
assertType('int|string', $b);
7777

7878
return $a <=> $b;
7979
}));
8080

81-
assertType("array<'foo'|0, int|string>", array_uintersect($arrayShape1, $array1, static function (mixed $a, mixed $b) {
81+
assertType("array<0|'foo', int|string>", array_uintersect($arrayShape1, $array1, static function (mixed $a, mixed $b) {
8282
assertType('int|string', $a);
8383
assertType('int', $b);
8484

8585
return $a <=> $b;
8686
}));
8787

88-
assertType("array<'bar'|'foo', string>", array_uintersect($arrayShape2, $array1, static function (mixed $a, mixed $b) {
88+
assertType("array<'bar'|'foo', int|string>", array_uintersect($arrayShape2, $array1, static function (mixed $a, mixed $b) {
8989
assertType('int|string', $a);
9090
assertType('int', $b);
9191

Diff for: tests/PHPStan/Rules/Functions/CallToFunctionParametersRuleTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ public function testArrayUdiffCallback(): void
649649
14,
650650
],
651651
[
652-
'Parameter #1 $arr1 of function array_udiff expects array<string>, null given.',
652+
'Parameter #1 $arr1 of function array_udiff expects array<TKey of (int|string), string>, null given.',
653653
20,
654654
],
655655
[
@@ -675,7 +675,7 @@ public function testArrayUintersectCallback(): void
675675
14,
676676
],
677677
[
678-
'Parameter #1 $arr1 of function array_uintersect expects array<string>, null given.',
678+
'Parameter #1 $arr1 of function array_uintersect expects array<TKey of (int|string), string>, null given.',
679679
20,
680680
],
681681
[

0 commit comments

Comments
 (0)