I do not know if this was already cited. But on another recent thread the issue #29368 redesign typeof(::Type) was mentioned, and right on the original post:
A related issue is that types like
DataType
andType{Int}
have an overly-complex subtype and specificity relationship: one is not a subtype of the other, but their intersection is non-empty, and we’re not able to accurately represent that intersection. For various reasons (including backwards compatibility) subtyping currently gets this wrong on purpose, makingType{Int} <: DataType
true.