From 9e2b88a2959f87e318227c61613df1b54eaa2ca6 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Tue, 13 Aug 2019 15:52:06 -0400 Subject: [PATCH 1/3] Fix convert(typeof(x), x) --- src/intervals/conversion.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intervals/conversion.jl b/src/intervals/conversion.jl index 464966499..b6cbb2b02 100644 --- a/src/intervals/conversion.jl +++ b/src/intervals/conversion.jl @@ -17,7 +17,7 @@ convert(::Type{Interval{T}}, x::Bool) where {T} = convert(Interval{T}, Int(x)) convert(::Type{Interval{T}}, x::Real) where {T} = atomic(Interval{T}, x) convert(::Type{Interval{T}}, x::T) where {T<:Real} = Interval{T}(x) convert(::Type{Interval{T}}, x::Interval{T}) where {T} = x -convert(::Type{Interval{T}}, x::Interval) where {T} = atomic(Interval{T}, x) +convert(::Type{Interval{T}}, x::Interval{S}) where {T,S} = atomic(Interval{T}, x) convert(::Type{Interval}, x::Real) = (T = typeof(float(x)); convert(Interval{T}, x)) convert(::Type{Interval}, x::Interval) = x From 100eae45454e3d0e46544219ca18c6ca07872266 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Tue, 13 Aug 2019 17:04:07 -0400 Subject: [PATCH 2/3] Add test --- test/interval_tests/construction.jl | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/interval_tests/construction.jl b/test/interval_tests/construction.jl index 6544dcc08..c05205e9a 100644 --- a/test/interval_tests/construction.jl +++ b/test/interval_tests/construction.jl @@ -5,6 +5,8 @@ using Test const eeuler = Base.MathConstants.e +using InteractiveUtils + @testset "Constructing intervals" begin setprecision(Interval, 53) @@ -340,3 +342,12 @@ import IntervalArithmetic: force_interval @test force_interval(Inf, -Inf) == Interval(-Inf, Inf) @test_throws ArgumentError force_interval(NaN, 3) end + +@testset "#320 fixing convert bug" begin + x = 3..4 + T = typeof(x) + + m = @which convert(T, x) + + @test m.sig == Tuple{typeof(convert),Type{Interval{T}},Interval{T}} where T +end From 4be62a910ce410fb7f5193207ebf93c6e4c10a81 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Tue, 13 Aug 2019 17:21:35 -0400 Subject: [PATCH 3/3] Add test of converting rational --- test/interval_tests/construction.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/interval_tests/construction.jl b/test/interval_tests/construction.jl index c05205e9a..d43742a56 100644 --- a/test/interval_tests/construction.jl +++ b/test/interval_tests/construction.jl @@ -350,4 +350,8 @@ end m = @which convert(T, x) @test m.sig == Tuple{typeof(convert),Type{Interval{T}},Interval{T}} where T + + x = interval(1//1, 5//3) + @test convert(typeof(x), x) == x + end