Skip to content

Commit 3b5b0ad

Browse files
Support uppercase string
1 parent 2617873 commit 3b5b0ad

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/Type/Php/ArrayChangeKeyCaseFunctionReturnTypeExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use PHPStan\Type\Accessory\AccessoryNonEmptyStringType;
1111
use PHPStan\Type\Accessory\AccessoryNonFalsyStringType;
1212
use PHPStan\Type\Accessory\AccessoryNumericStringType;
13+
use PHPStan\Type\Accessory\AccessoryUppercaseStringType;
1314
use PHPStan\Type\Accessory\NonEmptyArrayType;
1415
use PHPStan\Type\ArrayType;
1516
use PHPStan\Type\Constant\ConstantArrayTypeBuilder;
@@ -117,6 +118,8 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
117118
}
118119
if ($case === CASE_LOWER) {
119120
$types[] = new AccessoryLowercaseStringType();
121+
} elseif ($case === CASE_UPPER) {
122+
$types[] = new AccessoryUppercaseStringType();
120123
}
121124

122125
return TypeCombinator::intersect(...$types);

tests/PHPStan/Analyser/nsrt/array-change-key-case.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ public function sayHello(
4242

4343
assertType('array<lowercase-string, string>', array_change_key_case($arr2));
4444
assertType('array<lowercase-string, string>', array_change_key_case($arr2, CASE_LOWER));
45-
assertType('array<string, string>', array_change_key_case($arr2, CASE_UPPER));
45+
assertType('array<uppercase-string, string>', array_change_key_case($arr2, CASE_UPPER));
4646
assertType('array<string, string>', array_change_key_case($arr2, $case));
4747

4848
assertType('array<int|lowercase-string, string>', array_change_key_case($arr3));
4949
assertType('array<int|lowercase-string, string>', array_change_key_case($arr3, CASE_LOWER));
50-
assertType('array<int|string, string>', array_change_key_case($arr3, CASE_UPPER));
50+
assertType('array<int|uppercase-string, string>', array_change_key_case($arr3, CASE_UPPER));
5151
assertType('array<int|string, string>', array_change_key_case($arr3, $case));
5252

5353
assertType('array<int, string>', array_change_key_case($arr4));
@@ -57,22 +57,22 @@ public function sayHello(
5757

5858
assertType('array<lowercase-string, string>', array_change_key_case($arr5));
5959
assertType('array<lowercase-string, string>', array_change_key_case($arr5, CASE_LOWER));
60-
assertType('array<string, string>', array_change_key_case($arr5, CASE_UPPER));
60+
assertType('array<uppercase-string, string>', array_change_key_case($arr5, CASE_UPPER));
6161
assertType('array<string, string>', array_change_key_case($arr5, $case));
6262

6363
assertType('array<lowercase-string&non-falsy-string, string>', array_change_key_case($arr6));
6464
assertType('array<lowercase-string&non-falsy-string, string>', array_change_key_case($arr6, CASE_LOWER));
65-
assertType('array<non-falsy-string, string>', array_change_key_case($arr6, CASE_UPPER));
65+
assertType('array<non-falsy-string&uppercase-string, string>', array_change_key_case($arr6, CASE_UPPER));
6666
assertType('array<non-falsy-string, string>', array_change_key_case($arr6, $case));
6767

6868
assertType('array<lowercase-string&non-empty-string, string>', array_change_key_case($arr7));
6969
assertType('array<lowercase-string&non-empty-string, string>', array_change_key_case($arr7, CASE_LOWER));
70-
assertType('array<non-empty-string, string>', array_change_key_case($arr7, CASE_UPPER));
70+
assertType('array<non-empty-string&uppercase-string, string>', array_change_key_case($arr7, CASE_UPPER));
7171
assertType('array<non-empty-string, string>', array_change_key_case($arr7, $case));
7272

7373
assertType('array<lowercase-string, string>', array_change_key_case($arr8));
7474
assertType('array<lowercase-string, string>', array_change_key_case($arr8, CASE_LOWER));
75-
assertType('array<string, string>', array_change_key_case($arr8, CASE_UPPER));
75+
assertType('array<uppercase-string, string>', array_change_key_case($arr8, CASE_UPPER));
7676
assertType('array<string, string>', array_change_key_case($arr8, $case));
7777

7878
assertType('array{foo: 1, bar?: 2}', array_change_key_case($arr9));

0 commit comments

Comments
 (0)