diff --git a/rules-tests/DeadCode/Rector/ClassMethod/RemoveReturnTagIncompatibleWithNativeTypeRector/Fixture/skip_literal_string_narrowing.php.inc b/rules-tests/DeadCode/Rector/ClassMethod/RemoveReturnTagIncompatibleWithNativeTypeRector/Fixture/skip_literal_string_narrowing.php.inc new file mode 100644 index 00000000000..8b6fdb241ac --- /dev/null +++ b/rules-tests/DeadCode/Rector/ClassMethod/RemoveReturnTagIncompatibleWithNativeTypeRector/Fixture/skip_literal_string_narrowing.php.inc @@ -0,0 +1,14 @@ + ['string'], AccessoryNonEmptyStringType::class => ['non-empty-string'], + AccessoryLiteralStringType::class => ['literal-string'], + AccessoryNumericStringType::class => ['numeric-string'], + AccessoryNonFalsyStringType::class => ['non-falsy-string', 'truthy-string'], + AccessoryLowercaseStringType::class => ['lowercase-string'], + AccessoryUppercaseStringType::class => ['uppercase-string'], NonEmptyArrayType::class => ['non-empty-array'], ClassStringType::class => ['class-string'], FloatType::class => ['float', 'real', 'double'], @@ -68,6 +79,18 @@ public function mapScalarStringToType(string $scalarName): Type return IntegerRangeType::createAllSmallerThan(0); } + if ($loweredScalarName === 'non-negative-int') { + return IntegerRangeType::fromInterval(0, null); + } + + if ($loweredScalarName === 'non-positive-int') { + return IntegerRangeType::fromInterval(null, 0); + } + + if ($loweredScalarName === 'array-key') { + return new UnionType([new IntegerType(), new StringType()]); + } + foreach (self::SCALAR_NAME_BY_TYPE as $objectType => $scalarNames) { if (! in_array($loweredScalarName, $scalarNames, true)) { continue;