diff --git a/src/remake.jl b/src/remake.jl index 21de62d..ac18dd1 100644 --- a/src/remake.jl +++ b/src/remake.jl @@ -55,6 +55,12 @@ function remake_buffer(sys, oldbuffer::AbstractArray, idxs, vals) return newbuffer end +# We don't support `Dict`s as value providers. If we get a `Dict`, +# assume it is non-symbolic. +function remake_buffer(sys, oldbuffer::Dict, idxs, vals) + return Dict(idxs .=> vals) +end + remake_buffer(sys, ::Nothing, idxs, vals) = nothing function remake_buffer(sys, oldbuffer, idxs, vals) diff --git a/test/remake_test.jl b/test/remake_test.jl index ce261c2..e9e33e3 100644 --- a/test/remake_test.jl +++ b/test/remake_test.jl @@ -73,3 +73,12 @@ for (buf, newbuf, idxs, vals) in [ end @test isnothing(remake_buffer(sys, nothing, [], [])) + +@testset "`remake_buffer` with `Dict`" begin + sys = nothing + buf = Dict("a" => 1, "b" => 2) + buf2 = remake_buffer(sys, buf, collect(keys(buf)), collect(values(buf))) + @test isequal(buf, buf2) + buf2 = remake_buffer(sys, buf, buf) + @test isequal(buf, buf2) +end