Skip to content

Commit d147f4c

Browse files
authored
Use dedicated Type methods over isSuperTypeOf()
1 parent 604d1da commit d147f4c

22 files changed

+234
-33
lines changed

src/Analyser/TypeSpecifier.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ public function specifyTypesInCondition(
239239
&& count($expr->right->getArgs()) === 1
240240
&& $expr->right->name instanceof Name
241241
&& in_array(strtolower((string) $expr->right->name), ['count', 'sizeof'], true)
242-
&& (new IntegerType())->isSuperTypeOf($leftType)->yes()
242+
&& $leftType->isInteger()->yes()
243243
) {
244244
if (
245245
$context->truthy() && (IntegerRangeType::createAllGreaterThanOrEqualTo(1 - $offset)->isSuperTypeOf($leftType)->yes())
@@ -258,7 +258,7 @@ public function specifyTypesInCondition(
258258
&& count($expr->right->getArgs()) === 1
259259
&& $expr->right->name instanceof Name
260260
&& strtolower((string) $expr->right->name) === 'strlen'
261-
&& (new IntegerType())->isSuperTypeOf($leftType)->yes()
261+
&& $leftType->isInteger()->yes()
262262
) {
263263
if (
264264
$context->truthy() && (IntegerRangeType::createAllGreaterThanOrEqualTo(1 - $offset)->isSuperTypeOf($leftType)->yes())
@@ -1646,12 +1646,10 @@ public function resolveEqual(Expr\BinaryOp\Equal $expr, Scope $scope, TypeSpecif
16461646
return $this->create($expr->left, new NonEmptyArrayType(), $context->negate(), false, $scope, $rootExpr);
16471647
}
16481648

1649-
$integerType = new IntegerType();
1650-
$floatType = new FloatType();
16511649
if (
16521650
($leftType->isString()->yes() && $rightType->isString()->yes())
1653-
|| ($integerType->isSuperTypeOf($leftType)->yes() && $integerType->isSuperTypeOf($rightType)->yes())
1654-
|| ($floatType->isSuperTypeOf($leftType)->yes() && $floatType->isSuperTypeOf($rightType)->yes())
1651+
|| ($leftType->isInteger()->yes() && $rightType->isInteger()->yes())
1652+
|| ($leftType->isFloat()->yes() && $rightType->isFloat()->yes())
16551653
|| ($leftType->isEnum()->yes() && $rightType->isEnum()->yes())
16561654
) {
16571655
return $this->specifyTypesInCondition($scope, new Expr\BinaryOp\Identical($expr->left, $expr->right), $context, $rootExpr);

src/Reflection/InitializerExprTypeResolver.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -877,9 +877,8 @@ public function getModType(Expr $left, Expr $right, callable $getTypeCallback):
877877
}
878878
}
879879

880-
$integer = new IntegerType();
881880
$positiveInt = IntegerRangeType::fromInterval(0, null);
882-
if ($integer->isSuperTypeOf($rightType)->yes()) {
881+
if ($rightType->isInteger()->yes()) {
883882
$rangeMin = null;
884883
$rangeMax = null;
885884

@@ -1334,15 +1333,12 @@ public function resolveIdenticalType(Type $leftType, Type $rightType): BooleanTy
13341333

13351334
public function resolveEqualType(Type $leftType, Type $rightType): BooleanType
13361335
{
1337-
$integerType = new IntegerType();
1338-
$floatType = new FloatType();
1339-
13401336
if (
13411337
($leftType->isEnum()->yes() && $rightType->isTrue()->no())
13421338
|| ($rightType->isEnum()->yes() && $leftType->isTrue()->no())
13431339
|| ($leftType->isString()->yes() && $rightType->isString()->yes())
1344-
|| ($integerType->isSuperTypeOf($leftType)->yes() && $integerType->isSuperTypeOf($rightType)->yes())
1345-
|| ($floatType->isSuperTypeOf($leftType)->yes() && $floatType->isSuperTypeOf($rightType)->yes())
1340+
|| ($leftType->isInteger()->yes() && $rightType->isInteger()->yes())
1341+
|| ($leftType->isFloat()->yes() && $rightType->isFloat()->yes())
13461342
) {
13471343
return $this->resolveIdenticalType($leftType, $rightType);
13481344
}

src/Type/Accessory/AccessoryLiteralStringType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public function isOffsetAccessible(): TrinaryLogic
134134

135135
public function hasOffsetValueType(Type $offsetType): TrinaryLogic
136136
{
137-
return (new IntegerType())->isSuperTypeOf($offsetType)->and(TrinaryLogic::createMaybe());
137+
return $offsetType->isInteger()->and(TrinaryLogic::createMaybe());
138138
}
139139

140140
public function getOffsetValueType(Type $offsetType): Type

src/Type/Accessory/AccessoryNonEmptyStringType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public function isOffsetAccessible(): TrinaryLogic
136136

137137
public function hasOffsetValueType(Type $offsetType): TrinaryLogic
138138
{
139-
return (new IntegerType())->isSuperTypeOf($offsetType)->and(TrinaryLogic::createMaybe());
139+
return $offsetType->isInteger()->and(TrinaryLogic::createMaybe());
140140
}
141141

142142
public function getOffsetValueType(Type $offsetType): Type

src/Type/Accessory/AccessoryNonFalsyStringType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public function isOffsetAccessible(): TrinaryLogic
137137

138138
public function hasOffsetValueType(Type $offsetType): TrinaryLogic
139139
{
140-
return (new IntegerType())->isSuperTypeOf($offsetType)->and(TrinaryLogic::createMaybe());
140+
return $offsetType->isInteger()->and(TrinaryLogic::createMaybe());
141141
}
142142

143143
public function getOffsetValueType(Type $offsetType): Type

src/Type/Accessory/AccessoryNumericStringType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public function isOffsetAccessible(): TrinaryLogic
139139

140140
public function hasOffsetValueType(Type $offsetType): TrinaryLogic
141141
{
142-
return (new IntegerType())->isSuperTypeOf($offsetType)->and(TrinaryLogic::createMaybe());
142+
return $offsetType->isInteger()->and(TrinaryLogic::createMaybe());
143143
}
144144

145145
public function getOffsetValueType(Type $offsetType): Type

src/Type/ArrayType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ public function unsetOffset(Type $offsetType): Type
499499
public function fillKeysArray(Type $valueType): Type
500500
{
501501
$itemType = $this->getItemType();
502-
if ((new IntegerType())->isSuperTypeOf($itemType)->no()) {
502+
if ($itemType->isInteger()->no()) {
503503
$stringKeyType = $itemType->toString();
504504
if ($stringKeyType instanceof ErrorType) {
505505
return $stringKeyType;

src/Type/BitwiseFlagHelper.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ private function typeContainsIntFlag(Type $type, int $flag): TrinaryLogic
9494
return TrinaryLogic::createNo();
9595
}
9696

97-
$integerType = new IntegerType();
98-
if ($integerType->isSuperTypeOf($type)->yes() || $type instanceof MixedType) {
97+
if ($type->isInteger()->yes() || $type instanceof MixedType) {
9998
return TrinaryLogic::createMaybe();
10099
}
101100

src/Type/Constant/ConstantArrayType.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
use PHPStan\Type\Generic\TemplateTypeMap;
3838
use PHPStan\Type\Generic\TemplateTypeVariance;
3939
use PHPStan\Type\IntegerRangeType;
40-
use PHPStan\Type\IntegerType;
4140
use PHPStan\Type\IntersectionType;
4241
use PHPStan\Type\MixedType;
4342
use PHPStan\Type\NeverType;
@@ -746,7 +745,7 @@ public function fillKeysArray(Type $valueType): Type
746745
$builder = ConstantArrayTypeBuilder::createEmpty();
747746

748747
foreach ($this->valueTypes as $i => $keyType) {
749-
if ((new IntegerType())->isSuperTypeOf($keyType)->no()) {
748+
if ($keyType->isInteger()->no()) {
750749
$stringKeyType = $keyType->toString();
751750
if ($stringKeyType instanceof ErrorType) {
752751
return $stringKeyType;

src/Type/Php/ArrayCombineFunctionReturnTypeExtension.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use PHPStan\Type\Constant\ConstantStringType;
1616
use PHPStan\Type\DynamicFunctionReturnTypeExtension;
1717
use PHPStan\Type\ErrorType;
18-
use PHPStan\Type\IntegerType;
1918
use PHPStan\Type\MixedType;
2019
use PHPStan\Type\NeverType;
2120
use PHPStan\Type\Type;
@@ -74,7 +73,7 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
7473
if ($keysParamType->isArray()->yes()) {
7574
$itemType = $keysParamType->getIterableValueType();
7675

77-
if ((new IntegerType())->isSuperTypeOf($itemType)->no()) {
76+
if ($itemType->isInteger()->no()) {
7877
if ($itemType->toString() instanceof ErrorType) {
7978
return new NeverType();
8079
}
@@ -117,7 +116,7 @@ private function sanitizeConstantArrayKeyTypes(array $types): ?array
117116
$sanitizedTypes = [];
118117

119118
foreach ($types as $type) {
120-
if ((new IntegerType())->isSuperTypeOf($type)->no() && ! $type->toString() instanceof ErrorType) {
119+
if ($type->isInteger()->no() && ! $type->toString() instanceof ErrorType) {
121120
$type = $type->toString();
122121
}
123122

0 commit comments

Comments
 (0)