Skip to content

Commit 3611a96

Browse files
committed
add Type::isNever and Type::isExplicitNever methods
1 parent 66617b9 commit 3611a96

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
@@ -435,6 +435,16 @@ public function isScalar(): TrinaryLogic
435435
return TrinaryLogic::createNo();
436436
}
437437

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

src/Type/Accessory/AccessoryLiteralStringType.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::createYes();
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/AccessoryLowercaseStringType.php

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

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

src/Type/Accessory/AccessoryNonEmptyStringType.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/AccessoryNonFalsyStringType.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
$falseyTypes = StaticTypeFactory::falsey();

src/Type/Accessory/AccessoryNumericStringType.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::createYes();
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
if ($type->isNull()->yes()) {

src/Type/Accessory/AccessoryUppercaseStringType.php

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

345+
public function isNever(): TrinaryLogic
346+
{
347+
return TrinaryLogic::createNo();
348+
}
349+
350+
public function isExplicitNever(): TrinaryLogic
351+
{
352+
return TrinaryLogic::createNo();
353+
}
354+
345355
public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
346356
{
347357
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
@@ -431,6 +431,16 @@ public function isScalar(): TrinaryLogic
431431
return TrinaryLogic::createMaybe();
432432
}
433433

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

0 commit comments

Comments
 (0)