public function processNode(\PhpParser\Node $node, Scope $scope) : array
{
if (!$node->var instanceof ArrayDimFetch) {
return [];
}
$assignedToType = $scope->getType($node->var->var);
if (!$assignedToType instanceof ArrayType) {
return [];
}
if ($assignedToType->isItemTypeInferredFromLiteralArray()) {
return [];
}
$assignedValueType = $scope->getType($node->expr);
if (!$assignedToType->getItemType()->accepts($assignedValueType)) {
return [sprintf('Array (%s) does not accept %s.', $assignedToType->describe(), $assignedValueType->describe())];
}
return [];
}