Is that me being dumb or you being terse? 
I’ve just looked at how collect(::Generator) is implemented. The first thing it does is inferring the element type:
Where the macro @default_eltype expands to a call to Core.Inference.return_type.
So why is collect() allowed to use inference while eltype() is not?