1
0
mirror of https://github.com/danog/psalm.git synced 2025-01-21 21:31:13 +01:00

Allow static to carry intersection types

This commit is contained in:
Matthew Brown 2018-11-22 01:03:32 -05:00
parent 1f3fab4cad
commit 786ac6c4eb
2 changed files with 13 additions and 2 deletions

View File

@ -673,7 +673,7 @@ class MethodCallAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\
$codebase,
$return_type_candidate,
$self_fq_class_name,
$fq_class_name
$fq_class_name . ($intersection_types ? '&' . implode('&', $intersection_types) : '')
);
$return_type_location = $codebase->methods->getMethodReturnTypeLocation(

View File

@ -889,7 +889,18 @@ class ExpressionAnalyzer
);
}
$return_type->value = $static_class;
if (strpos($static_class, '&')) {
$static_classes = explode('&', $static_class);
$return_type->value = array_shift($static_classes);
$return_type->extra_types = array_map(
function (string $extra_type) : Type\Atomic\TNamedObject {
return new Type\Atomic\TNamedObject($extra_type);
},
$static_classes
);
} else {
$return_type->value = $static_class;
}
} elseif ($return_type_lc === 'self') {
if (!$self_class) {
throw new \UnexpectedValueException(