julia> import Unmarshal, JSON
julia> struct Foo
x::Tuple
end
julia> foo = Foo((1,5,6))
Foo((1, 5, 6))
julia> Unmarshal.unmarshal(Foo, JSON.parse(JSON.json(foo)))
ERROR: StackOverflowError:
Stacktrace:
[1] unmarshal(::Type{Any}, ::Int64, ::Bool, ::Int64) at C:\Users\sunoru\pro\julia-packages\Unmarshal\src\Unmarshal.jl:147 (repeats 80000 times)
julia> t = (1,6,7)
(1, 6, 7)
julia> Unmarshal.unmarshal(Tuple{Int}, JSON.parse(JSON.json(t)))
(1, 6, 7)
julia> Unmarshal.unmarshal(typeof(t), JSON.parse(JSON.json(t)))
(1, 6, 7)
julia> t2 = (1, 3, 4.5)
(1, 3, 4.5)
julia> Unmarshal.unmarshal(typeof(t2), JSON.parse(JSON.json(t2)))
ERROR: InexactError: Int64(4.5)
Stacktrace:
[1] Type at .\float.jl:703 [inlined]
[2] unmarshal at C:\Users\sunoru\pro\julia-packages\Unmarshal\src\Unmarshal.jl:144 [inlined]
[3] (::getfield(Unmarshal, Symbol("##5#6")){Tuple{Int64,Int64,Float64},Bool})(::Float64) at .\none:0
[4] iterate(::Base.Generator{Array{Any,1},getfield(Unmarshal, Symbol("##5#6")){Tuple{Int64,Int64,Float64},Bool}}, ::Int64) at .\generator.jl:47
[5] append_any(::Any, ::Vararg{Any,N} where N) at .\essentials.jl:680
[6] unmarshal(::Type{Tuple{Int64,Int64,Float64}}, ::Array{Any,1}, ::Bool, ::Int64) at C:\Users\sunoru\pro\julia-packages\Unmarshal\src\Unmarshal.jl:117
[7] unmarshal(::Type{Tuple{Int64,Int64,Float64}}, ::Array{Any,1}) at C:\Users\sunoru\pro\julia-packages\Unmarshal\src\Unmarshal.jl:112
[8] top-level scope at none:0
I'm going to open a pull request to help fix this. Just want to file an issue first to let you know :)