Skip to content

Commit aeb5e03

Browse files
committed
Fix hasmissing dispatches (#368) (#369)
Fixes #368.
1 parent cc3025b commit aeb5e03

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "DynamicPPL"
22
uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8"
3-
version = "0.17.4"
3+
version = "0.17.5"
44

55
[deps]
66
AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001"

src/compiler.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -546,9 +546,10 @@ function make_returns_explicit!(body::Expr)
546546
end
547547

548548
const FloatOrArrayType = Type{<:Union{AbstractFloat,AbstractArray}}
549-
hasmissing(T::Type{<:AbstractArray{TA}}) where {TA<:AbstractArray} = hasmissing(TA)
550-
hasmissing(T::Type{<:AbstractArray{>:Missing}}) = true
551-
hasmissing(T::Type) = false
549+
hasmissing(::Type) = false
550+
hasmissing(::Type{>:Missing}) = true
551+
hasmissing(::Type{<:AbstractArray{TA}}) where {TA} = hasmissing(TA)
552+
hasmissing(::Type{Union{}}) = false # issue #368
552553

553554
"""
554555
build_output(modelinfo, linenumbernode)

test/compiler.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,4 +588,18 @@ end
588588
@model outer() = @submodel x = inner()
589589
@test outer()() isa Real
590590
end
591+
592+
@testset "issue #368: hasmissing dispatch" begin
593+
@test !DynamicPPL.hasmissing(typeof(Union{}[]))
594+
595+
# (nested) arrays with `Missing` eltypes
596+
@test DynamicPPL.hasmissing(Vector{Union{Missing,Float64}})
597+
@test DynamicPPL.hasmissing(Matrix{Union{Missing,Real}})
598+
@test DynamicPPL.hasmissing(Vector{Matrix{Union{Missing,Float32}}})
599+
600+
# no `Missing`
601+
@test !DynamicPPL.hasmissing(Vector{Float64})
602+
@test !DynamicPPL.hasmissing(Matrix{Real})
603+
@test !DynamicPPL.hasmissing(Vector{Matrix{Float32}})
604+
end
591605
end

0 commit comments

Comments
 (0)