Explanation and examples for "Subtyping currently intentionally answers certain queries incorrectly for kind types"?

I noticed this in the Julia source:

It was added in this PR:

AFAIU isnotbrokensubtype(a, b) basically means “a <: b is probably valid”? But when is it not valid? I think some examples would help my understanding and enable being more sure about writing correct code.

On a more basic level, what are kind types in Julia? I assume it refers to DataType, Type, Union and UnionAll? Is it just that? Wikipedia seems to have a page for this, but I’m not sure how relevant it is for Julia: Kind (type theory) - Wikipedia

I’m also curious about the “intentionally” part, what’s the rationale for intentionally breaking subtyping?

As a more specific question, can anyone give example inputs for which typesplit is broken:

1 Like