1: | <?php declare(strict_types = 1); |
2: | |
3: | namespace PHPStan\Node\Printer; |
4: | |
5: | use PhpParser\PrettyPrinter\Standard; |
6: | use PHPStan\DependencyInjection\AutowiredService; |
7: | use PHPStan\Node\Expr\AlwaysRememberedExpr; |
8: | use PHPStan\Node\Expr\ExistingArrayDimFetch; |
9: | use PHPStan\Node\Expr\ForeachValueByRefExpr; |
10: | use PHPStan\Node\Expr\GetIterableKeyTypeExpr; |
11: | use PHPStan\Node\Expr\GetIterableValueTypeExpr; |
12: | use PHPStan\Node\Expr\GetOffsetValueTypeExpr; |
13: | use PHPStan\Node\Expr\NativeTypeExpr; |
14: | use PHPStan\Node\Expr\OriginalPropertyTypeExpr; |
15: | use PHPStan\Node\Expr\ParameterVariableOriginalValueExpr; |
16: | use PHPStan\Node\Expr\PropertyInitializationExpr; |
17: | use PHPStan\Node\Expr\SetExistingOffsetValueTypeExpr; |
18: | use PHPStan\Node\Expr\SetOffsetValueTypeExpr; |
19: | use PHPStan\Node\Expr\TypeExpr; |
20: | use PHPStan\Node\Expr\UnsetOffsetExpr; |
21: | use PHPStan\Node\IssetExpr; |
22: | use PHPStan\Type\VerbosityLevel; |
23: | use function sprintf; |
24: | |
25: | |
26: | |
27: | |
28: | #[AutowiredService(as: Printer::class)] |
29: | final class Printer extends Standard |
30: | { |
31: | |
32: | protected function pPHPStan_Node_TypeExpr(TypeExpr $expr): string |
33: | { |
34: | return sprintf('__phpstanType(%s)', $expr->getExprType()->describe(VerbosityLevel::precise())); |
35: | } |
36: | |
37: | protected function pPHPStan_Node_NativeTypeExpr(NativeTypeExpr $expr): string |
38: | { |
39: | return sprintf('__phpstanNativeType(%s, %s)', $expr->getPhpDocType()->describe(VerbosityLevel::precise()), $expr->getNativeType()->describe(VerbosityLevel::precise())); |
40: | } |
41: | |
42: | protected function pPHPStan_Node_GetOffsetValueTypeExpr(GetOffsetValueTypeExpr $expr): string |
43: | { |
44: | return sprintf('__phpstanGetOffsetValueType(%s, %s)', $this->p($expr->getVar()), $this->p($expr->getDim())); |
45: | } |
46: | |
47: | protected function pPHPStan_Node_UnsetOffsetExpr(UnsetOffsetExpr $expr): string |
48: | { |
49: | return sprintf('__phpstanUnsetOffset(%s, %s)', $this->p($expr->getVar()), $this->p($expr->getDim())); |
50: | } |
51: | |
52: | protected function pPHPStan_Node_GetIterableValueTypeExpr(GetIterableValueTypeExpr $expr): string |
53: | { |
54: | return sprintf('__phpstanGetIterableValueType(%s)', $this->p($expr->getExpr())); |
55: | } |
56: | |
57: | protected function pPHPStan_Node_GetIterableKeyTypeExpr(GetIterableKeyTypeExpr $expr): string |
58: | { |
59: | return sprintf('__phpstanGetIterableKeyType(%s)', $this->p($expr->getExpr())); |
60: | } |
61: | |
62: | protected function pPHPStan_Node_ExistingArrayDimFetch(ExistingArrayDimFetch $expr): string |
63: | { |
64: | return sprintf('__phpstanExistingArrayDimFetch(%s, %s)', $this->p($expr->getVar()), $this->p($expr->getDim())); |
65: | } |
66: | |
67: | protected function pPHPStan_Node_OriginalPropertyTypeExpr(OriginalPropertyTypeExpr $expr): string |
68: | { |
69: | return sprintf('__phpstanOriginalPropertyType(%s)', $this->p($expr->getPropertyFetch())); |
70: | } |
71: | |
72: | protected function pPHPStan_Node_SetOffsetValueTypeExpr(SetOffsetValueTypeExpr $expr): string |
73: | { |
74: | return sprintf('__phpstanSetOffsetValueType(%s, %s, %s)', $this->p($expr->getVar()), $expr->getDim() !== null ? $this->p($expr->getDim()) : 'null', $this->p($expr->getValue())); |
75: | } |
76: | |
77: | protected function pPHPStan_Node_SetExistingOffsetValueTypeExpr(SetExistingOffsetValueTypeExpr $expr): string |
78: | { |
79: | return sprintf('__phpstanSetExistingOffsetValueType(%s, %s, %s)', $this->p($expr->getVar()), $this->p($expr->getDim()), $this->p($expr->getValue())); |
80: | } |
81: | |
82: | protected function pPHPStan_Node_AlwaysRememberedExpr(AlwaysRememberedExpr $expr): string |
83: | { |
84: | return sprintf('__phpstanRemembered(%s)', $this->p($expr->getExpr())); |
85: | } |
86: | |
87: | protected function pPHPStan_Node_PropertyInitializationExpr(PropertyInitializationExpr $expr): string |
88: | { |
89: | return sprintf('__phpstanPropertyInitialization(%s)', $expr->getPropertyName()); |
90: | } |
91: | |
92: | protected function pPHPStan_Node_ForeachValueByRefExpr(ForeachValueByRefExpr $expr): string |
93: | { |
94: | return sprintf('__phpstanForeachValueByRef(%s)', $this->p($expr->getExpr())); |
95: | } |
96: | |
97: | protected function pPHPStan_Node_ParameterVariableOriginalValueExpr(ParameterVariableOriginalValueExpr $expr): string |
98: | { |
99: | return sprintf('__phpstanParameterVariableOriginalValue(%s)', $expr->getVariableName()); |
100: | } |
101: | |
102: | protected function pPHPStan_Node_IssetExpr(IssetExpr $expr): string |
103: | { |
104: | return sprintf('__phpstanIssetExpr(%s)', $this->p($expr->getExpr())); |
105: | } |
106: | |
107: | } |
108: | |