Hey Internals, I'm working on the patch to change the error exception to \ArgumentCountError instead of \Error when too few, or too many arguments are passed in as discussed a couple of weeks ago.
To be BC with 7.0, this extends \TypeError, which is the exception currently thrown when strict_types=1 for both userland and internal functions. I've run into an issue where things are inconsistent for internal functions. For example, the array_* functions, like array_diff, still have a warning thrown, regardless of strict_types: php_error_docref(NULL, E_WARNING, "at least %d parameters are required, %d given", req_args, ZEND_NUM_ARGS()); It seems that fixing this will be: a) a mammoth task b) a huge BC break (stuff that currently throws a warning in strict_types mode will now throw an exception, similar BC break as we're implementing for userland functions regardless of strict_types) c) something we should have done for 7.0, and that we cannot change now. We are currently heading in 7.1.0RC1 in two weeks, and I want this issue resolved in its entirety before then. What say you, internals? - Davey