From 48f942bdd659ae55d7d3e34dcf15dbb8bd871d71 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Fri, 14 Feb 2020 12:44:17 -0800 Subject: [PATCH] Remove Iterators.reverse(::Tuple) specialization (#34732) --- base/iterators.jl | 1 - base/reduce.jl | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/base/iterators.jl b/base/iterators.jl index 1c58180b14f3f..20baf2077e59d 100644 --- a/base/iterators.jl +++ b/base/iterators.jl @@ -98,7 +98,6 @@ reverse(G::Generator) = Generator(G.f, reverse(G.iter)) reverse(r::Reverse) = r.itr reverse(x::Union{Number,AbstractChar}) = x reverse(p::Pair) = Base.reverse(p) # copying pairs is cheap -reverse(xs::Tuple) = Base.reverse(xs) # allows inference in mapfoldr and similar iterate(r::Reverse{<:Tuple}, i::Int = length(r.itr)) = i < 1 ? nothing : (r.itr[i], i-1) diff --git a/base/reduce.jl b/base/reduce.jl index fa957cf841f01..73b200eb77288 100644 --- a/base/reduce.jl +++ b/base/reduce.jl @@ -178,9 +178,12 @@ foldl(op, itr; kw...) = mapfoldl(identity, op, itr; kw...) function mapfoldr_impl(f, op, nt, itr) op′, itr′ = _xfadjoint(BottomRF(FlipArgs(op)), Generator(f, itr)) - return foldl_impl(op′, nt, Iterators.reverse(itr′)) + return foldl_impl(op′, nt, _reverse(itr′)) end +_reverse(itr) = Iterators.reverse(itr) +_reverse(itr::Tuple) = reverse(itr) #33235 + struct FlipArgs{F} f::F end