Skip to content

Commit ecb8880

Browse files
committed
make general case error and AbstractChar work
1 parent a7ed7dd commit ecb8880

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/Measurements.jl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,19 @@ function Measurement(val::V, err::E, tag::UInt64,
6060
return Measurement(T(val), T(err), tag, Derivatives{T}(der))
6161
end
6262
Measurement{T}(x::Measurement{S}) where {T,S} = convert(Measurement{T}, x)
63-
Measurement{T}(x::S) where {T,S} = convert(Measurement{T}, x)
63+
Measurement{T}(x::S) where {T,S <: Real} = convert(Measurement{T}, x)
6464

6565
# disambiguities
6666
Measurement{T}(x::S) where {T, S<:Rational} = convert(Measurement{T}, x)
6767
Measurement{T}(x::S) where {T, S<:Complex} = convert(Measurement{T}, x)
6868
Measurement{T}(x::S) where {T, S<:Base.TwicePrecision} = convert(Measurement{T}, x)
6969
Measurement{T}(x::S) where {P, T, S<:Rational{P}} = convert(Measurement{T}, x)
70+
Measurement{T}(x::S) where {T, S <: AbstractChar} = convert(Measurement{T}, x)
7071

71-
72-
function Measurement{T}(::S) where {T, S<:AbstractChar}
72+
function Measurement{T}(::S) where {T, S}
7373
throw(ArgumentError("cannot convert `$S` to `Measurement{$T}`"))
7474
end
7575

76-
77-
7876
# Functions to quickly create an empty Derivatives object.
7977
@generated empty_der1(x::Measurement{T}) where {T<:AbstractFloat} = Derivatives{T}()
8078
@generated empty_der2(x::T) where {T<:AbstractFloat} = Derivatives{x}()

src/conversions.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Base.convert(::Type{Measurement{T}}, a::Real) where {T<:AbstractFloat} =
2424
measurement(T(a))::Measurement{T}
2525
Base.convert(::Type{Measurement{T}}, a::Base.TwicePrecision) where {T<:AbstractFloat} =
2626
measurement(T(a))::Measurement{T}
27+
Base.convert(::Type{Measurement{T}}, a::AbstractChar) where {T<:AbstractFloat} =
28+
measurement(T(a))::Measurement{T}
2729

2830
function Base.convert(::Type{Measurement{T}}, a::Complex) where {T}
2931
if isreal(a)

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ end
109109
@test convert(Measurement{Float64}, 1+0im) 1.0±0.0
110110
@test_throws InexactError convert(Measurement{Float64}, 1+1im)
111111
@test convert(Measurement{Float64}, Base.TwicePrecision(1.0, 0.0)) 1.0±0.0
112+
@test convert(Measurement{Float64}, 'a') Float64('a') ± 0.0
112113
end
113114

114115
@testset "Comparisons and Tests" begin

0 commit comments

Comments
 (0)