Hi,
I am new to Julia. I am working with a Julia package not written by myself which the writer is not available. I am facing this error:
ERROR: TypeError: in typeassert, expected UInt64, got a value of type UInt32
The error is happening on the haskey
line:
function find_partition(model::Model, ms)
ps = Dict{Z3Expr,Vector{Int}}()
for (i, m) in enumerate(ms)
mval = Z3.eval(model, m, false)
println(ps)
println(mval)
println(typeof(mval))
if haskey(ps, mval)
push!(ps[mval], i)
else
push!(ps, mval=>Int[i])
end
end
values(ps)
end
The output of the following code is:
Dict{Z3.Expr, Vector{Int64}}()
1.0
Z3.ExprAllocated
ERROR: TypeError: in typeassert, expected UInt64, got a value of type UInt32
Here is the Stacktrace:
[1] hashindex(key::Z3.ExprAllocated, sz::Int64)
@ Base ./dict.jl:169
[2] ht_keyindex(h::Dict{Z3.Expr, Vector{Int64}}, key::Z3.ExprAllocated)
@ Base ./dict.jl:284
[3] haskey(h::Dict{Z3.Expr, Vector{Int64}}, key::Z3.ExprAllocated)
@ Base ./dict.jl:550
[4] find_partition(model::Z3.ModelAllocated, ms::Vector{Z3.ExprAllocated})
@ Absynth.NLSat ~/Desktop/faoc/Absynth/src/nlsat/cfinitesolver.jl:101
I think this package has been consistent with previous Julia versions. I guess the error is happening because of the type of the variable sz
which is the length of a dictionary which seems to be different in the current Julia version in comparison to previous ones.
Is there any way I could fix this? Like rewriting this part of the code without the usage of haskey method and recompiling the package?
All this haskey, ht_keyindex and hashindex methods are in the dict.jl file of Julia.