Tuple isa UnionAll == false

this looks weird:

julia> Tuple isa UnionAll
false

is this a bug?

I don’t think so, but it is difficult. I admit, that I don’t fully understand it so that I am able to explain it properly to somebody.

You may have a read at
https://docs.julialang.org/en/v1/devdocs/types/#Tuple-types-1

especially the text about

when T is free with respect to the Tuple type

this is the first in the following examples:

julia> isa(Tuple{Vararg{T}} where T,UnionAll)
true

julia> isa(Tuple{Vararg{T} where T},UnionAll)
false

well, everything isa Any, now, according to the documentation,

A union of types over all values of a type parameter

thus,

julia> UnionAll |> supertype
Type{T}

julia> UnionAll |> supertype |> supertype
Any

julia> Tuple |> supertype
Any

I removed the unnecessary last line. It was too much copy paste. Anyways, the point is not about Any but UnionAll.