1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Node;
4:
5: use Override;
6: use PhpParser\Node;
7: use PhpParser\Node\Expr\ArrowFunction;
8: use PhpParser\NodeAbstract;
9: use PHPStan\Turbo\ReferencedByTurboExtension;
10: use PHPStan\Type\ClosureType;
11:
12: /**
13: * @api
14: */
15: #[ReferencedByTurboExtension(key: 'inArrowFunctionNode')]
16: final class InArrowFunctionNode extends NodeAbstract implements VirtualNode
17: {
18:
19: private Node\Expr\ArrowFunction $originalNode;
20:
21: public function __construct(private ClosureType $closureType, ArrowFunction $originalNode)
22: {
23: parent::__construct($originalNode->getAttributes());
24: $this->originalNode = $originalNode;
25: }
26:
27: public function getClosureType(): ClosureType
28: {
29: return $this->closureType;
30: }
31:
32: public function getOriginalNode(): Node\Expr\ArrowFunction
33: {
34: return $this->originalNode;
35: }
36:
37: #[Override]
38: public function getType(): string
39: {
40: return 'PHPStan_Node_InArrowFunctionNode';
41: }
42:
43: /**
44: * @return string[]
45: */
46: #[Override]
47: public function getSubNodeNames(): array
48: {
49: return [];
50: }
51:
52: }
53: