diff --git a/base/skipoftype.jl b/base/skipoftype.jl index 307f7936402a1..61f12581c51a5 100644 --- a/base/skipoftype.jl +++ b/base/skipoftype.jl @@ -28,7 +28,8 @@ skipoftype(::T, itr) where T = skipoftype(T, itr) IteratorSize(::Type{<:SkipOfType}) = SizeUnknown() IteratorEltype(::Type{SkipOfType{T, A}}) where {T, A} = IteratorEltype(A) -eltype(::Type{SkipOfType{T, A}}) where {T, A} = typesubtract(T, eltype(A)) +eltype(::Type{SkipOfType{T, A}}) where {T, A} = + Core.Compiler.typesubtract(eltype(A), T) function iterate(itr::SkipOfType{T, <:Any}, state...) where T y = iterate(itr.x, state...) @@ -137,9 +138,3 @@ mapreduce_impl(f, op, A::SkipOfType, ifirst::Integer, ilast::Integer) = end end end - -_typesubtract(::Type{T}, ::Type{Union{T,S}}) where {T, S} = S -_typesubtract(::Type{T}, ::Type{T}) where {T} = Union{} - -# Necessary for cases like _typesubtract(Union{A,B}, Union{A,C}) -typesubtract(::Type{T}, ::Type{S}) where {T, S} = _typesubtract(T, Union{T,S})