Skip to content

Commit 77035d4

Browse files
canvuralondrejmirtes
authored andcommitted
add Type::isNever and Type::isExplicitNever methods
1 parent 2938845 commit 77035d4

30 files changed

+286
-0
lines changed

src/Rules/Api/ApiInstanceofTypeRule.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
use PHPStan\Type\IntegerType;
3939
use PHPStan\Type\IntersectionType;
4040
use PHPStan\Type\IterableType;
41+
use PHPStan\Type\NeverType;
4142
use PHPStan\Type\NullType;
4243
use PHPStan\Type\ObjectShapeType;
4344
use PHPStan\Type\ObjectType;
@@ -79,6 +80,7 @@ final class ApiInstanceofTypeRule implements Rule
7980
IntersectionType::class => null,
8081
ConstantScalarType::class => 'Type::isConstantScalarValue() or Type::getConstantScalarTypes() or Type::getConstantScalarValues()',
8182
ObjectShapeType::class => 'Type::isObject() and Type::hasProperty()',
83+
NeverType::class => 'Type::isNever() or Type::isExplicitNever()',
8284

8385
// accessory types
8486
NonEmptyArrayType::class => 'Type::isIterableAtLeastOnce()',

src/Type/Accessory/AccessoryArrayListType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,16 @@ public function isScalar(): TrinaryLogic
429429
return TrinaryLogic::createNo();
430430
}
431431

432+
public function isNever(): TrinaryLogic
433+
{
434+
return TrinaryLogic::createNo();
435+
}
436+
437+
public function isExplicitNever(): TrinaryLogic
438+
{
439+
return TrinaryLogic::createNo();
440+
}
441+
432442
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
433443
{
434444
return new BooleanType();

src/Type/Accessory/AccessoryLiteralStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,16 @@ public function isScalar(): TrinaryLogic
337337
return TrinaryLogic::createYes();
338338
}
339339

340+
public function isNever(): TrinaryLogic
341+
{
342+
return TrinaryLogic::createNo();
343+
}
344+
345+
public function isExplicitNever(): TrinaryLogic
346+
{
347+
return TrinaryLogic::createNo();
348+
}
349+
340350
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
341351
{
342352
return new BooleanType();

src/Type/Accessory/AccessoryLowercaseStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,16 @@ public function isScalar(): TrinaryLogic
334334
return TrinaryLogic::createYes();
335335
}
336336

337+
public function isNever(): TrinaryLogic
338+
{
339+
return TrinaryLogic::createNo();
340+
}
341+
342+
public function isExplicitNever(): TrinaryLogic
343+
{
344+
return TrinaryLogic::createNo();
345+
}
346+
337347
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
338348
{
339349
if (

src/Type/Accessory/AccessoryNonEmptyStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,16 @@ public function isScalar(): TrinaryLogic
332332
return TrinaryLogic::createYes();
333333
}
334334

335+
public function isNever(): TrinaryLogic
336+
{
337+
return TrinaryLogic::createNo();
338+
}
339+
340+
public function isExplicitNever(): TrinaryLogic
341+
{
342+
return TrinaryLogic::createNo();
343+
}
344+
335345
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
336346
{
337347
if ($type->isNull()->yes()) {

src/Type/Accessory/AccessoryNonFalsyStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,16 @@ public function isScalar(): TrinaryLogic
332332
return TrinaryLogic::createYes();
333333
}
334334

335+
public function isNever(): TrinaryLogic
336+
{
337+
return TrinaryLogic::createNo();
338+
}
339+
340+
public function isExplicitNever(): TrinaryLogic
341+
{
342+
return TrinaryLogic::createNo();
343+
}
344+
335345
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
336346
{
337347
$falseyTypes = StaticTypeFactory::falsey();

src/Type/Accessory/AccessoryNumericStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,16 @@ public function isScalar(): TrinaryLogic
337337
return TrinaryLogic::createYes();
338338
}
339339

340+
public function isNever(): TrinaryLogic
341+
{
342+
return TrinaryLogic::createNo();
343+
}
344+
345+
public function isExplicitNever(): TrinaryLogic
346+
{
347+
return TrinaryLogic::createNo();
348+
}
349+
340350
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
341351
{
342352
if ($type->isNull()->yes()) {

src/Type/Accessory/AccessoryUppercaseStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,16 @@ public function isScalar(): TrinaryLogic
334334
return TrinaryLogic::createYes();
335335
}
336336

337+
public function isNever(): TrinaryLogic
338+
{
339+
return TrinaryLogic::createNo();
340+
}
341+
342+
public function isExplicitNever(): TrinaryLogic
343+
{
344+
return TrinaryLogic::createNo();
345+
}
346+
337347
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
338348
{
339349
if (

src/Type/Accessory/HasOffsetType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,16 @@ public function isScalar(): TrinaryLogic
347347
return TrinaryLogic::createMaybe();
348348
}
349349

350+
public function isNever(): TrinaryLogic
351+
{
352+
return TrinaryLogic::createNo();
353+
}
354+
355+
public function isExplicitNever(): TrinaryLogic
356+
{
357+
return TrinaryLogic::createNo();
358+
}
359+
350360
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
351361
{
352362
return new BooleanType();

src/Type/Accessory/HasOffsetValueType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,16 @@ public function isScalar(): TrinaryLogic
426426
return TrinaryLogic::createMaybe();
427427
}
428428

429+
public function isNever(): TrinaryLogic
430+
{
431+
return TrinaryLogic::createNo();
432+
}
433+
434+
public function isExplicitNever(): TrinaryLogic
435+
{
436+
return TrinaryLogic::createNo();
437+
}
438+
429439
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
430440
{
431441
return new BooleanType();

0 commit comments

Comments
 (0)