julia
462d7f4c - Fix annotated join with non-concrete eltype iters (#54919)

Commit
1 year ago
Fix annotated join with non-concrete eltype iters (#54919) As raised in <https://github.com/JuliaLang/StyledStrings.jl/issues/57#issuecomment-2097457142>, when the eltype of an iterator is non-concrete, `_isannotated` will return false. To properly check such cases, we need to see if any of the elements of the iterator are annotated. This is a bit of an interesting case, since: - Most of the time it shouldn't be hit, we can reasonably expect most iterables to infer as producing concrete types - The eltype of the iterator is (generally) known at compile-time, and so in any case other than the ambiguous non-concrete one, this check remains able to be done at compile-time. With this change, join always preserves annotations. The compromise made is that iterators with non-concrete eltypes can result in join inferring a union return type (i.e. type instability with non-concrete iterators), but that doesn't seem too bad to me (I don't see how we could be completely type stable without concrete types here).
Author
Parents
Loading