From 5c2f8efedfaaf33ed2b0f73598a8d8b33f439ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20S=C3=A1nchez=20Ram=C3=ADrez?= Date: Mon, 3 Mar 2025 12:03:27 +0100 Subject: [PATCH] Fix `Colon(::TracedRNumber, ::TracedRNumber)` --- src/TracedRNumber.jl | 2 ++ test/control_flow.jl | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/TracedRNumber.jl b/src/TracedRNumber.jl index 65e94960ff..4a69be4a9b 100644 --- a/src/TracedRNumber.jl +++ b/src/TracedRNumber.jl @@ -429,4 +429,6 @@ function Base.copysign(x::S, y::TracedRNumber{T}) where {S<:Number,T} return copysign(TracedUtils.promote_to(TracedRNumber{S}, x), y) end +Base.:(:)(start::T, stop::T) where {N<:Real,T<:TracedRNumber{N}} = UnitRange{T}(start, stop) + end # module TracedRNumberOverrides diff --git a/test/control_flow.jl b/test/control_flow.jl index 63f51f126e..cf8a61a395 100644 --- a/test/control_flow.jl +++ b/test/control_flow.jl @@ -635,6 +635,23 @@ function call1(a, b) return @trace _call1(x, y) end +function for_traced_bounds(start, stop) + x = zero(start) + @trace for i in start:stop + x += i + end + return x +end + +@testset "for: traced bounds" begin + start = 1 + stop = 4 + start_re = ConcreteRNumber(start) + stop_re = ConcreteRNumber(stop) + + @test @jit(for_traced_bounds(start_re, stop_re)) == for_traced_bounds(start, stop) +end + @testset "call: basic" begin a = rand(2, 3) b = rand(2, 3)