diff --git a/src/PseudoTypes/NeverReturn.php b/src/PseudoTypes/NeverReturn.php new file mode 100644 index 0000000..b2e87f7 --- /dev/null +++ b/src/PseudoTypes/NeverReturn.php @@ -0,0 +1,36 @@ + Parent_::class, 'iterable' => Iterable_::class, 'never' => Never_::class, + 'never-return' => NeverReturn::class, + 'never-returns' => NeverReturns::class, + 'no-return' => NoReturn::class, 'list' => List_::class, 'non-empty-list' => NonEmptyList::class, 'non-falsy-string' => NonFalsyString::class, diff --git a/src/Types/Never_.php b/src/Types/Never_.php index 40a99c9..fefc0a4 100644 --- a/src/Types/Never_.php +++ b/src/Types/Never_.php @@ -23,7 +23,7 @@ * * @psalm-immutable */ -final class Never_ implements Type +class Never_ implements Type { /** * Returns a rendered output of the Type as it would be used in a DocBlock. diff --git a/tests/unit/PseudoTypes/NeverReturnTest.php b/tests/unit/PseudoTypes/NeverReturnTest.php new file mode 100644 index 0000000..76b4432 --- /dev/null +++ b/tests/unit/PseudoTypes/NeverReturnTest.php @@ -0,0 +1,32 @@ +assertEquals(new Never_(), $type->underlyingType()); + } + + public function testToString(): void + { + $this->assertSame('never-return', (string) (new NeverReturn())); + } +} diff --git a/tests/unit/PseudoTypes/NeverReturnsTest.php b/tests/unit/PseudoTypes/NeverReturnsTest.php new file mode 100644 index 0000000..56160b7 --- /dev/null +++ b/tests/unit/PseudoTypes/NeverReturnsTest.php @@ -0,0 +1,32 @@ +assertEquals(new Never_(), $type->underlyingType()); + } + + public function testToString(): void + { + $this->assertSame('never-returns', (string) (new NeverReturns())); + } +} diff --git a/tests/unit/PseudoTypes/NoReturnTest.php b/tests/unit/PseudoTypes/NoReturnTest.php new file mode 100644 index 0000000..81b4c56 --- /dev/null +++ b/tests/unit/PseudoTypes/NoReturnTest.php @@ -0,0 +1,32 @@ +assertEquals(new Never_(), $type->underlyingType()); + } + + public function testToString(): void + { + $this->assertSame('no-return', (string) (new NoReturn())); + } +} diff --git a/tests/unit/TypeResolverTest.php b/tests/unit/TypeResolverTest.php index 287688f..04c92c0 100644 --- a/tests/unit/TypeResolverTest.php +++ b/tests/unit/TypeResolverTest.php @@ -40,6 +40,8 @@ use phpDocumentor\Reflection\PseudoTypes\LiteralString; use phpDocumentor\Reflection\PseudoTypes\LowercaseString; use phpDocumentor\Reflection\PseudoTypes\NegativeInteger; +use phpDocumentor\Reflection\PseudoTypes\NeverReturn; +use phpDocumentor\Reflection\PseudoTypes\NeverReturns; use phpDocumentor\Reflection\PseudoTypes\NonEmptyArray; use phpDocumentor\Reflection\PseudoTypes\NonEmptyList; use phpDocumentor\Reflection\PseudoTypes\NonEmptyLowercaseString; @@ -48,6 +50,7 @@ use phpDocumentor\Reflection\PseudoTypes\NonNegativeInteger; use phpDocumentor\Reflection\PseudoTypes\NonPositiveInteger; use phpDocumentor\Reflection\PseudoTypes\NonZeroInteger; +use phpDocumentor\Reflection\PseudoTypes\NoReturn; use phpDocumentor\Reflection\PseudoTypes\Numeric_; use phpDocumentor\Reflection\PseudoTypes\NumericString; use phpDocumentor\Reflection\PseudoTypes\ObjectShape; @@ -676,6 +679,9 @@ public function provideKeywords(): array ['parent', Parent_::class], ['iterable', Iterable_::class], ['never', Never_::class], + ['never-return', NeverReturn::class], + ['never-returns', NeverReturns::class], + ['no-return', NoReturn::class], ['literal-string', LiteralString::class], ['list', List_::class], ['non-empty-list', NonEmptyList::class],