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