1--TEST--
2Type check in call_user_func_array() + array_slice() optimization (strict types)
3--FILE--
4<?php
5declare(strict_types=1);
6
7$array = [1, 2, 3];
8
9try {
10    $len = [];
11    call_user_func_array('var_dump', array_slice($array, 0, $len));
12} catch (TypeError $e) {
13    echo $e->getMessage(), "\n";
14}
15
16try {
17    $len = 2.0;
18    call_user_func_array('var_dump', array_slice($array, 0, $len));
19} catch (TypeError $e) {
20    echo $e->getMessage(), "\n";
21}
22
23$len = null;
24call_user_func_array('var_dump', array_slice($array, 1, $len));
25
26?>
27--EXPECT--
28array_slice(): Argument #3 ($length) must be of type ?int, array given
29array_slice(): Argument #3 ($length) must be of type ?int, float given
30int(2)
31int(3)
32