JuliaIO / JLD.jl

Saving and loading julia variables while preserving native types
MIT License
277 stars 55 forks source link

Functions are not supported #135

Closed MikeInnes closed 7 years ago

MikeInnes commented 7 years ago

From 0.5 onwards, generic functions are identical to singleton types, so there seems to be no reason to support one and not the other.

julia> using JLD

julia> type Foo x end

julia> type Bar end

julia> x = Foo(Bar())
Foo(Bar())

julia> @save "test.jld" x

julia> x = Foo(fft)
Foo(fft)

julia> @save "test.jld" x
WARNING: isgeneric(f) is deprecated, use isa(f,Function) instead.
 in depwarn(::String, ::Symbol) at ./deprecated.jl:64
 in isgeneric(::Function) at ./deprecated.jl:50
 in func2expr(::Function) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:853
 in Type at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:860 [inlined]
 in writeas at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:863 [inlined]
 in write_ref(::JLD.JldFile, ::Function, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:667
 in macro expansion at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:669 [inlined]
 in h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:685
 in #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:709
 in #write#14(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
 in write(::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
 in macro expansion; at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:1177 [inlined]
 in anonymous at ./<missing>:?
 in eval(::Module, ::Any) at ./boot.jl:234
 in eval(::Module, ::Any) at /Users/mike/projects/julia5/usr/lib/julia/sys.dylib:?
 in eval_user_input(::Any, ::Base.REPL.REPLBackend) at ./REPL.jl:64
 in macro expansion at ./REPL.jl:95 [inlined]
 in (::Base.REPL.##3#4{Base.REPL.REPLBackend})() at ./event.jl:68
while loading no file, in expression starting on line 0
ERROR: AssertionError: generic functions not supported
 in func2expr(::Function) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:853
 in Type at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:860 [inlined]
 in writeas at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:863 [inlined]
 in write_ref(::JLD.JldFile, ::Function, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:667
 in macro expansion at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:669 [inlined]
 in h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:685
 in #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:709
 in #write#14(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
 in write(::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
 in macro expansion; at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:1177 [inlined]
 in anonymous at ./<missing>:?
yuyichao commented 7 years ago

Dup of https://github.com/JuliaIO/JLD.jl/issues/57