diff --git a/stdlib/LinearAlgebra/src/generic.jl b/stdlib/LinearAlgebra/src/generic.jl index 7ab9b6412cb5b..dd0541505896e 100644 --- a/stdlib/LinearAlgebra/src/generic.jl +++ b/stdlib/LinearAlgebra/src/generic.jl @@ -904,6 +904,9 @@ function dot(x, y) # arbitrary iterables end dot(x::Number, y::Number) = conj(x) * y +dot(::Missing, ::Number) = missing +dot(::Number, ::Missing) = missing +dot(::Missing, ::Missing) = missing function dot(x::AbstractArray, y::AbstractArray) lx = length(x) diff --git a/stdlib/LinearAlgebra/test/matmul.jl b/stdlib/LinearAlgebra/test/matmul.jl index 1017134f2f6d4..8f2a2581ab37f 100644 --- a/stdlib/LinearAlgebra/test/matmul.jl +++ b/stdlib/LinearAlgebra/test/matmul.jl @@ -456,6 +456,11 @@ dot2(x,y) = invoke(dot, Tuple{AbstractArray,AbstractArray}, x,y) end end +@testset "dot with missings" begin + @test dot(1, missing) === dot(missing, 1) === dot(missing, missing) === missing + @test dot([1, missing], [1, 2]) === dot([1, 2], [1, missing]) === missing +end + @testset "Issue 11978" begin A = Matrix{Matrix{Float64}}(undef, 2, 2) A[1,1] = Matrix(1.0I, 3, 3)