|
26 | 26 | use PHPStan\Type\StringType;
|
27 | 27 | use PHPStan\Type\Type;
|
28 | 28 | use PHPStan\Type\TypeCombinator;
|
| 29 | +use PHPStan\Type\UnionType; |
29 | 30 | use function count;
|
30 | 31 | use function is_array;
|
31 | 32 | use function is_int;
|
@@ -113,13 +114,16 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
|
113 | 114 | $returnStringType = new StringType();
|
114 | 115 | }
|
115 | 116 |
|
116 |
| - $capturedArrayType = new ConstantArrayType( |
117 |
| - [new ConstantIntegerType(0), new ConstantIntegerType(1)], |
118 |
| - [$returnStringType, IntegerRangeType::fromInterval(0, null)], |
119 |
| - [2], |
120 |
| - [], |
121 |
| - TrinaryLogic::createYes(), |
| 117 | + $arrayTypeBuilder = ConstantArrayTypeBuilder::createEmpty(); |
| 118 | + $arrayTypeBuilder->setOffsetValueType( |
| 119 | + new ConstantIntegerType(0), |
| 120 | + $returnStringType |
122 | 121 | );
|
| 122 | + $arrayTypeBuilder->setOffsetValueType( |
| 123 | + new ConstantIntegerType(1), |
| 124 | + IntegerRangeType::fromInterval(0, null) |
| 125 | + ); |
| 126 | + $capturedArrayType = $arrayTypeBuilder->getArray(); |
123 | 127 |
|
124 | 128 | $returnInternalValueType = $returnStringType;
|
125 | 129 | if ($capturesOffset !== null) {
|
@@ -203,7 +207,7 @@ private function isValidPattern(string $pattern): bool
|
203 | 207 |
|
204 | 208 | private function isIntOrStringValue(Type $type): bool
|
205 | 209 | {
|
206 |
| - return $type->isInteger()->yes() || $type->isString()->yes() || $type->isConstantScalarValue()->yes(); |
| 210 | + return (new UnionType([new IntegerType(), new StringType()]))->isSuperTypeOf($type)->yes(); |
207 | 211 | }
|
208 | 212 |
|
209 | 213 | }
|
0 commit comments