diff options
Diffstat (limited to 'vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php')
-rw-r--r-- | vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php new file mode 100644 index 000000000..5b5824988 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php @@ -0,0 +1,45 @@ +<?php + +namespace Prophecy\Doubler\Generator\Node; + +use Prophecy\Exception\Doubler\DoubleException; + +final class ReturnTypeNode extends TypeNodeAbstract +{ + protected function getRealType(string $type): string + { + switch ($type) { + case 'void': + case 'never': + return $type; + default: + return parent::getRealType($type); + } + } + + protected function guardIsValidType() + { + if (isset($this->types['void']) && count($this->types) !== 1) { + throw new DoubleException('void cannot be part of a union'); + } + if (isset($this->types['never']) && count($this->types) !== 1) { + throw new DoubleException('never cannot be part of a union'); + } + + parent::guardIsValidType(); + } + + /** + * @deprecated use hasReturnStatement + */ + public function isVoid() + { + return $this->types == ['void' => 'void']; + } + + public function hasReturnStatement(): bool + { + return $this->types !== ['void' => 'void'] + && $this->types !== ['never' => 'never']; + } +} |