a = [1, 2] push!(a)
The second line here is effectively a nop, but it runs without any indication that something weird is going on. It’s highly unlikely that this code was intended as is, so it would be useful if we could print a warning here. Catching such mistakes early and informing the user would save a lot of time and bugs.
vcat() also allows an empty vararg, and returns a 0-element array (and possibly other inbuilt functions with vararg arguments too).
Is there a significant performance impact from checking whether the given vararg iterator is empty, in such functions? If there is, it can be argued that this should instead go in a linter tool. But it would be much better to have it in the language itself since this is a potential newbie-trap, and so this check is most useful in the REPL, and in environments where the user doesn’t yet have lint tools installed.