1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Node;
4:
5: use Override;
6: use PhpParser\Node\Expr;
7: use PhpParser\NodeAbstract;
8: use PHPStan\Analyser\Scope;
9: use PHPStan\Turbo\ReferencedByTurboExtension;
10:
11: /**
12: * @api
13: */
14: #[ReferencedByTurboExtension(key: 'matchExpressionNode')]
15: final class MatchExpressionNode extends NodeAbstract implements VirtualNode
16: {
17:
18: /**
19: * @param MatchExpressionArm[] $arms
20: */
21: public function __construct(
22: private Expr $condition,
23: private array $arms,
24: Expr\Match_ $originalNode,
25: private Scope $endScope,
26: )
27: {
28: parent::__construct($originalNode->getAttributes());
29: }
30:
31: public function getCondition(): Expr
32: {
33: return $this->condition;
34: }
35:
36: /**
37: * @return MatchExpressionArm[]
38: */
39: public function getArms(): array
40: {
41: return $this->arms;
42: }
43:
44: public function getEndScope(): Scope
45: {
46: return $this->endScope;
47: }
48:
49: #[Override]
50: public function getType(): string
51: {
52: return 'PHPStan_Node_MatchExpression';
53: }
54:
55: /**
56: * @return string[]
57: */
58: #[Override]
59: public function getSubNodeNames(): array
60: {
61: return [];
62: }
63:
64: }
65: