1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Node;
4:
5: use Override;
6: use PhpParser\Node\Stmt\While_;
7: use PhpParser\NodeAbstract;
8: use PHPStan\Analyser\StatementExitPoint;
9: use PHPStan\Turbo\ReferencedByTurboExtension;
10:
11: /**
12: * @api
13: */
14: #[ReferencedByTurboExtension(key: 'breaklessWhileLoopNode')]
15: final class BreaklessWhileLoopNode extends NodeAbstract implements VirtualNode
16: {
17:
18: /**
19: * @param StatementExitPoint[] $exitPoints
20: */
21: public function __construct(private While_ $originalNode, private array $exitPoints, private bool $hasYield)
22: {
23: parent::__construct($originalNode->getAttributes());
24: }
25:
26: public function getOriginalNode(): While_
27: {
28: return $this->originalNode;
29: }
30:
31: /**
32: * @return StatementExitPoint[]
33: */
34: public function getExitPoints(): array
35: {
36: return $this->exitPoints;
37: }
38:
39: public function hasYield(): bool
40: {
41: return $this->hasYield;
42: }
43:
44: #[Override]
45: public function getType(): string
46: {
47: return 'PHPStan_Node_BreaklessWhileLoop';
48: }
49:
50: /**
51: * @return string[]
52: */
53: #[Override]
54: public function getSubNodeNames(): array
55: {
56: return [];
57: }
58:
59: }
60: