Skip to content

Commit 3c6a7b3

Browse files
committed
resolve feedback
Addresses phpstan#3613 (comment)
1 parent 0c5e721 commit 3c6a7b3

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

src/Type/Php/ExplodeFunctionDynamicReturnTypeExtension.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,17 @@ public function getTypeFromFunctionCall(
5858
}
5959

6060
$stringType = $scope->getType($args[1]->value);
61+
$accessory = [];
6162
if ($stringType->isLowercaseString()->yes()) {
62-
$returnValueType = new IntersectionType([new StringType(), new AccessoryLowercaseStringType()]);
63-
} elseif ($stringType->isUppercaseString()->yes()) {
64-
$returnValueType = new IntersectionType([new StringType(), new AccessoryUppercaseStringType()]);
63+
$accessory[] = new AccessoryLowercaseStringType();
64+
}
65+
if ($stringType->isUppercaseString()->yes()) {
66+
$accessory[] = new AccessoryUppercaseStringType();
67+
}
68+
if (count($accessory) > 0) {
69+
$returnValueType = new IntersectionType([new StringType(), ...$accessory]);
6570
} else {
66-
$returnValueType = new StringType();
71+
$returnValueType = new StringType();
6772
}
6873

6974
$returnType = AccessoryArrayListType::intersectWith(new ArrayType(new IntegerType(), $returnValueType));

tests/PHPStan/Analyser/LegacyNodeScopeResolverTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,19 +1129,19 @@ public function dataArrayDestructuring(): array
11291129
'$fourthStringArrayForeachList',
11301130
],
11311131
[
1132-
'lowercase-string',
1132+
'lowercase-string&uppercase-string',
11331133
'$dateArray[\'Y\']',
11341134
],
11351135
[
1136-
'lowercase-string',
1136+
'lowercase-string&uppercase-string',
11371137
'$dateArray[\'m\']',
11381138
],
11391139
[
11401140
'int',
11411141
'$dateArray[\'d\']',
11421142
],
11431143
[
1144-
'lowercase-string',
1144+
'lowercase-string&uppercase-string',
11451145
'$intArrayForRewritingFirstElement[0]',
11461146
],
11471147
[

tests/PHPStan/Analyser/nsrt/bug-4711.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ function x(string $string): void {
1212
return;
1313
}
1414

15-
assertType('non-empty-list<lowercase-string>', explode($string, ''));
16-
assertType('non-empty-list<lowercase-string>', explode($string[0], ''));
15+
assertType('non-empty-list<lowercase-string&uppercase-string>', explode($string, ''));
16+
assertType('non-empty-list<lowercase-string&uppercase-string>', explode($string[0], ''));
1717
}
1818

1919
}

0 commit comments

Comments
 (0)