From dafec6f53230827c443be64577f49565d70e1954 Mon Sep 17 00:00:00 2001 From: Jacob Quinn Date: Sat, 29 Jul 2023 07:06:08 -0600 Subject: [PATCH] Fix startswith/endswith for Julia 1.10 (#68) * Fix startswith/endswith for Julia 1.10 * compat for 1.6 * oops --- src/InlineStrings.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/InlineStrings.jl b/src/InlineStrings.jl index 0d99f9a..db01276 100644 --- a/src/InlineStrings.jl +++ b/src/InlineStrings.jl @@ -679,7 +679,9 @@ function Base.repeat(x::T, r::Integer) where {T <: InlineString} end # copy/pasted from strings/util.jl -function Base.startswith(a::T, b::Union{String, SubString{String}, InlineString}) where {T <: InlineString} +#TODO: optimize this +Base.startswith(a::InlineString, b::InlineString) = invoke(startswith, Tuple{AbstractString, AbstractString}, a, b) +function Base.startswith(a::T, b::Union{String, SubString{String}}) where {T <: InlineString} cub = ncodeunits(b) ncodeunits(a) < cub && return false ref = Ref{T}(_bswap(a)) @@ -693,7 +695,9 @@ function Base.startswith(a::T, b::Union{String, SubString{String}, InlineString} end end -function Base.endswith(a::T, b::Union{String, SubString{String}, InlineString}) where {T <: InlineString} +#TODO: optimize this +Base.endswith(a::InlineString, b::InlineString) = invoke(endswith, Tuple{AbstractString, AbstractString}, a, b) +function Base.endswith(a::T, b::Union{String, SubString{String}}) where {T <: InlineString} cub = ncodeunits(b) astart = ncodeunits(a) - ncodeunits(b) + 1 astart < 1 && return false