| 1: | <?php declare(strict_types = 1); | 
| 2: | |
| 3: | namespace PHPStan\Type; | 
| 4: | |
| 5: | use PhpParser\Node\Expr; | 
| 6: | use PHPStan\Analyser\Scope; | 
| 7: | |
| 8: | /** | 
| 9: | * To register it in the configuration file use the `phpstan.broker.expressionTypeResolverExtension` service tag: | 
| 10: | * | 
| 11: | * ``` | 
| 12: | * services: | 
| 13: | * - | 
| 14: | * class: App\PHPStan\MyExtension | 
| 15: | * tags: | 
| 16: | * - phpstan.broker.expressionTypeResolverExtension | 
| 17: | * ``` | 
| 18: | * | 
| 19: | * You should return null in your extension if you don't care about given Expr. | 
| 20: | * | 
| 21: | * @api | 
| 22: | */ | 
| 23: | interface ExpressionTypeResolverExtension | 
| 24: | { | 
| 25: | |
| 26: | public function getType(Expr $expr, Scope $scope): ?Type; | 
| 27: | |
| 28: | } | 
| 29: |