Skip to content

Commit 6dc1d1f

Browse files
committed
add Type::isNever and Type::isExplicitNever methods
1 parent 2ea33ca commit 6dc1d1f

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;
@@ -80,6 +81,7 @@ final class ApiInstanceofTypeRule implements Rule
8081
IntersectionType::class => null,
8182
ConstantScalarType::class => 'Type::isConstantScalarValue() or Type::getConstantScalarTypes() or Type::getConstantScalarValues()',
8283
ObjectShapeType::class => 'Type::isObject() and Type::hasProperty()',
84+
NeverType::class => 'Type::isNever() or Type::isExplicitNever()',
8385

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

src/Type/Accessory/AccessoryArrayListType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,16 @@ public function isScalar(): TrinaryLogic
433433
return TrinaryLogic::createNo();
434434
}
435435

436+
public function isNever(): TrinaryLogic
437+
{
438+
return TrinaryLogic::createNo();
439+
}
440+
441+
public function isExplicitNever(): TrinaryLogic
442+
{
443+
return TrinaryLogic::createNo();
444+
}
445+
436446
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
437447
{
438448
return new BooleanType();

src/Type/Accessory/AccessoryLiteralStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,16 @@ public function isScalar(): TrinaryLogic
343343
return TrinaryLogic::createYes();
344344
}
345345

346+
public function isNever(): TrinaryLogic
347+
{
348+
return TrinaryLogic::createNo();
349+
}
350+
351+
public function isExplicitNever(): TrinaryLogic
352+
{
353+
return TrinaryLogic::createNo();
354+
}
355+
346356
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
347357
{
348358
return new BooleanType();

src/Type/Accessory/AccessoryLowercaseStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,16 @@ public function isScalar(): TrinaryLogic
340340
return TrinaryLogic::createYes();
341341
}
342342

343+
public function isNever(): TrinaryLogic
344+
{
345+
return TrinaryLogic::createNo();
346+
}
347+
348+
public function isExplicitNever(): TrinaryLogic
349+
{
350+
return TrinaryLogic::createNo();
351+
}
352+
343353
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
344354
{
345355
if (

src/Type/Accessory/AccessoryNonEmptyStringType.php

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

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

src/Type/Accessory/AccessoryNonFalsyStringType.php

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

341+
public function isNever(): TrinaryLogic
342+
{
343+
return TrinaryLogic::createNo();
344+
}
345+
346+
public function isExplicitNever(): TrinaryLogic
347+
{
348+
return TrinaryLogic::createNo();
349+
}
350+
341351
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
342352
{
343353
$falseyTypes = StaticTypeFactory::falsey();

src/Type/Accessory/AccessoryNumericStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,16 @@ public function isScalar(): TrinaryLogic
343343
return TrinaryLogic::createYes();
344344
}
345345

346+
public function isNever(): TrinaryLogic
347+
{
348+
return TrinaryLogic::createNo();
349+
}
350+
351+
public function isExplicitNever(): TrinaryLogic
352+
{
353+
return TrinaryLogic::createNo();
354+
}
355+
346356
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
347357
{
348358
if ($type->isNull()->yes()) {

src/Type/Accessory/AccessoryUppercaseStringType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,16 @@ public function isScalar(): TrinaryLogic
340340
return TrinaryLogic::createYes();
341341
}
342342

343+
public function isNever(): TrinaryLogic
344+
{
345+
return TrinaryLogic::createNo();
346+
}
347+
348+
public function isExplicitNever(): TrinaryLogic
349+
{
350+
return TrinaryLogic::createNo();
351+
}
352+
343353
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
344354
{
345355
if (

src/Type/Accessory/HasOffsetType.php

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

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

src/Type/Accessory/HasOffsetValueType.php

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

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

0 commit comments

Comments
 (0)