Skip to content

Commit

Permalink
Achieve BenevolentUnionType return type without dynamic return type e…
Browse files Browse the repository at this point in the history
…xtension
  • Loading branch information
ondrejmirtes committed Jan 17, 2022
1 parent f7197a8 commit 723dfc5
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 75 deletions.
10 changes: 0 additions & 10 deletions conf/config.neon
Expand Up @@ -1110,11 +1110,6 @@ services:
tags:
- phpstan.broker.dynamicFunctionReturnTypeExtension

-
class: PHPStan\Type\Php\GetoptFunctionDynamicReturnTypeExtension
tags:
- phpstan.broker.dynamicFunctionReturnTypeExtension

-
class: PHPStan\Type\Php\GetParentClassDynamicFunctionReturnTypeExtension
tags:
Expand Down Expand Up @@ -1144,11 +1139,6 @@ services:
tags:
- phpstan.dynamicFunctionThrowTypeExtension

-
class: PHPStan\Type\Php\PdoPrepareDynamicReturnTypeExtension
tags:
- phpstan.broker.dynamicMethodReturnTypeExtension

-
class: PHPStan\Type\Php\ReflectionClassConstructorThrowTypeExtension
tags:
Expand Down
4 changes: 2 additions & 2 deletions resources/functionMap.php
Expand Up @@ -3338,7 +3338,7 @@
'getmyinode' => ['int|false'],
'getmypid' => ['int|false'],
'getmyuid' => ['int|false'],
'getopt' => ['array<string,string>|array<string,false>|array<string,array<int,mixed>>|false', 'options'=>'string', 'longopts='=>'array', '&w_optind='=>'int'],
'getopt' => ['__benevolent<array<string,string>|array<string,false>|array<string,array<int,mixed>>|false>', 'options'=>'string', 'longopts='=>'array', '&w_optind='=>'int'],
'getprotobyname' => ['int|false', 'name'=>'string'],
'getprotobynumber' => ['string|false', 'proto'=>'int'],
'getrandmax' => ['int'],
Expand Down Expand Up @@ -8448,7 +8448,7 @@
'PDO::pgsqlLOBCreate' => ['string'],
'PDO::pgsqlLOBOpen' => ['resource', 'oid'=>'string', 'mode='=>'string'],
'PDO::pgsqlLOBUnlink' => ['bool', 'oid'=>'string'],
'PDO::prepare' => ['PDOStatement|false', 'statement'=>'string', 'options='=>'array'],
'PDO::prepare' => ['__benevolent<PDOStatement|false>', 'statement'=>'string', 'options='=>'array'],
'PDO::query' => ['PDOStatement|false', 'sql'=>'string'],
'PDO::query\'1' => ['PDOStatement|false', 'sql'=>'string', 'fetch_column'=>'int', 'colno'=>'int'],
'PDO::query\'2' => ['PDOStatement|false', 'sql'=>'string', 'fetch_class'=>'int', 'classname'=>'string', 'ctorargs'=>'array'],
Expand Down
6 changes: 6 additions & 0 deletions src/PhpDoc/TypeNodeResolver.php
Expand Up @@ -70,6 +70,7 @@
use PHPStan\Type\Type;
use PHPStan\Type\TypeAliasResolver;
use PHPStan\Type\TypeCombinator;
use PHPStan\Type\TypeUtils;
use PHPStan\Type\TypeWithClassName;
use PHPStan\Type\UnionType;
use PHPStan\Type\VoidType;
Expand Down Expand Up @@ -526,6 +527,11 @@ private function resolveGenericTypeNode(GenericTypeNode $typeNode, NameScope $na
return $genericTypes[0]->getIterableValueType();
}

return new ErrorType();
} elseif ($mainTypeName === '__benevolent') {
if (count($genericTypes) === 1) {
return TypeUtils::toBenevolentUnion($genericTypes[0]);
}
return new ErrorType();
}

Expand Down
26 changes: 0 additions & 26 deletions src/Type/Php/GetoptFunctionDynamicReturnTypeExtension.php

This file was deleted.

37 changes: 0 additions & 37 deletions src/Type/Php/PdoPrepareDynamicReturnTypeExtension.php

This file was deleted.

0 comments on commit 723dfc5

Please sign in to comment.