From 3a667d907d9aaffac4975c420f47101daa6df358 Mon Sep 17 00:00:00 2001 From: Will Tebbutt Date: Mon, 3 Feb 2025 17:08:15 +0000 Subject: [PATCH] Fix tuple increment inference --- src/tangents.jl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tangents.jl b/src/tangents.jl index c2d5b12c6..cf4c4c194 100644 --- a/src/tangents.jl +++ b/src/tangents.jl @@ -617,8 +617,9 @@ increment_internal!!(::IncCache, x::T, y::T) where {T<:IEEEFloat} = x + y function increment_internal!!(::IncCache, x::Ptr{T}, y::Ptr{T}) where {T} return x === y ? x : throw(error("eurgh")) end -function increment_internal!!(c::IncCache, x::T, y::T) where {T<:Tuple} - return tuple_map((x, y) -> increment_internal!!(c, x, y), x, y)::T +@generated function increment_internal!!(c::IncCache, x::T, y::T) where {T<:Tuple} + inc_exprs = map(n -> :(increment_internal!!(c, x[$n], y[$n])), 1:fieldcount(T)) + return Expr(:(::), Expr(:call, :tuple, inc_exprs...), T) end function increment_internal!!(c::IncCache, x::T, y::T) where {T<:NamedTuple} return T(tuple_map((x, y) -> increment_internal!!(c, x, y), x, y))