11const sym2loader = Dict {Symbol,Vector{Symbol}} ()
22const sym2saver = Dict {Symbol,Vector{Symbol}} ()
3- const has_pkg3 = try
4- using Pkg3
5- true
6- catch e
7- false
8- end
93
10- if isdefined (Base, :find_in_path )
11- function is_installed (pkg:: Symbol )
12- isdefined (Main, pkg) && isa (getfield (Main, pkg), Module) && return true # is a module defined in Main scope
13- path = Base. find_in_path (string (pkg)) # hacky way to determine if a Package is installed
14- path == nothing && return false
15- return isfile (path)
16- end
17- elseif has_pkg3 && isdefined (Pkg3, :installed )
18- is_installed (pkg:: Symbol ) = get (Pkg3. installed (), string (pkg), nothing ) != nothing
19- end
4+ is_installed (pkg:: Symbol ) = get (Pkg. installed (), string (pkg), nothing ) != nothing
205
216function checked_import (pkg:: Symbol )
227 isdefined (Main, pkg) && return getfield (Main, pkg)
238 isdefined (FileIO, pkg) && return getfield (FileIO, pkg)
249 ! is_installed (pkg) && throw (NotInstalledError (pkg, " " ))
25- ! isdefined (Main, pkg) && eval (Main, Expr (:import , pkg))
10+ ! isdefined (Main, pkg) && Core . eval (Main, Expr (:import , pkg))
2611 return getfield (Main, pkg)
2712end
2813
@@ -31,13 +16,13 @@ for (applicable_, add_, dict_) in (
3116 (:applicable_loaders , :add_loader , :sym2loader ),
3217 (:applicable_savers , :add_saver , :sym2saver ))
3318 @eval begin
34- function $applicable_ {sym} (:: Union{Type{DataFormat{sym}}, Formatted{DataFormat{sym}}} )
19+ function $applicable_ (:: Union{Type{DataFormat{sym}}, Formatted{DataFormat{sym}}} ) where sym
3520 if haskey ($ dict_, sym)
3621 return $ dict_[sym]
3722 end
3823 error (" No $($ applicable_) found for $(sym) " )
3924 end
40- function $add_ {sym} (:: Type{DataFormat{sym}} , pkg:: Symbol )
25+ function $add_ (:: Type{DataFormat{sym}} , pkg:: Symbol ) where sym
4126 list = get ($ dict_, sym, Symbol[])
4227 $ dict_[sym] = push! (list, pkg)
4328 end
@@ -120,31 +105,31 @@ function save(s::Union{AbstractString,IO}; options...)
120105end
121106
122107# Allow format to be overridden with first argument
123- function save {sym} (df:: Type{DataFormat{sym}} , f:: AbstractString , data... ; options... )
108+ function save (df:: Type{DataFormat{sym}} , f:: AbstractString , data... ; options... ) where sym
124109 libraries = applicable_savers (df)
125110 checked_import (libraries[1 ])
126- eval (Main, :($ save ($ File ($ (DataFormat{sym}), $ f),
111+ Core . eval (Main, :($ save ($ File ($ (DataFormat{sym}), $ f),
127112 $ data... ; $ options... )))
128113end
129114
130- function savestreaming {sym} (df:: Type{DataFormat{sym}} , s:: IO , data... ; options... )
115+ function savestreaming (df:: Type{DataFormat{sym}} , s:: IO , data... ; options... ) where sym
131116 libraries = applicable_savers (df)
132117 checked_import (libraries[1 ])
133- eval (Main, :($ savestreaming ($ Stream ($ (DataFormat{sym}), $ s),
118+ Core . eval (Main, :($ savestreaming ($ Stream ($ (DataFormat{sym}), $ s),
134119 $ data... ; $ options... )))
135120end
136121
137- function save {sym} (df:: Type{DataFormat{sym}} , s:: IO , data... ; options... )
122+ function save (df:: Type{DataFormat{sym}} , s:: IO , data... ; options... ) where sym
138123 libraries = applicable_savers (df)
139124 checked_import (libraries[1 ])
140- eval (Main, :($ save ($ Stream ($ (DataFormat{sym}), $ s),
125+ Core . eval (Main, :($ save ($ Stream ($ (DataFormat{sym}), $ s),
141126 $ data... ; $ options... )))
142127end
143128
144- function savestreaming {sym} (df:: Type{DataFormat{sym}} , f:: AbstractString , data... ; options... )
129+ function savestreaming (df:: Type{DataFormat{sym}} , f:: AbstractString , data... ; options... ) where sym
145130 libraries = applicable_savers (df)
146131 checked_import (libraries[1 ])
147- eval (Main, :($ savestreaming ($ File ($ (DataFormat{sym}), $ f),
132+ Core . eval (Main, :($ savestreaming ($ File ($ (DataFormat{sym}), $ f),
148133 $ data... ; $ options... )))
149134end
150135
163148# Handlers for formatted files/streams
164149
165150for fn in (:load , :loadstreaming , :metadata )
166- @eval function $fn {F} (q:: Formatted{F} , args... ; options... )
151+ @eval function $fn (q:: Formatted{F} , args... ; options... ) where F
167152 if unknown (q)
168153 isfile (filename (q)) || open (filename (q)) # force systemerror
169154 throw (UnknownFormat (q))
@@ -175,22 +160,22 @@ for fn in (:load, :loadstreaming, :metadata)
175160 Library = checked_import (library)
176161 gen2_func_name = Symbol (" fileio_" * $ (string (fn)))
177162 if isdefined (Library, gen2_func_name)
178- return eval (Library, :($ gen2_func_name ($ q, $ args... ; $ options... )))
163+ return Core . eval (Library, :($ gen2_func_name ($ q, $ args... ; $ options... )))
179164 end
180165 if ! has_method_from (methods (Library.$ fn), Library)
181166 throw (LoaderError (string (library), " $($ fn) not defined" ))
182167 end
183- return eval (Main, :($ (Library.$ fn)($ q, $ args... ; $ options... )))
168+ return Core . eval (Main, :($ (Library.$ fn)($ q, $ args... ; $ options... )))
184169 catch e
185170 push! (failures, (e, q))
186171 end
187172 end
188- handle_exceptions (failures, " loading \" $( filename (q))\" " )
173+ handle_exceptions (failures, " loading $( repr ( filename (q))) " )
189174 end
190175end
191176
192177for fn in (:save , :savestreaming )
193- @eval function $fn {F} (q:: Formatted{F} , data... ; options... )
178+ @eval function $fn (q:: Formatted{F} , data... ; options... ) where F
194179 unknown (q) && throw (UnknownFormat (q))
195180 libraries = applicable_savers (q)
196181 failures = Any[]
@@ -199,17 +184,17 @@ for fn in (:save, :savestreaming)
199184 Library = checked_import (library)
200185 gen2_func_name = Symbol (" fileio_" * $ (string (fn)))
201186 if isdefined (Library, gen2_func_name)
202- return eval (Library, :($ gen2_func_name ($ q, $ data... ; $ options... )))
187+ return Core . eval (Library, :($ gen2_func_name ($ q, $ data... ; $ options... )))
203188 end
204189 if ! has_method_from (methods (Library.$ fn), Library)
205190 throw (WriterError (string (library), " $($ fn) not defined" ))
206191 end
207- return eval (Main, :($ (Library.$ fn)($ q, $ data... ; $ options... )))
192+ return Core . eval (Main, :($ (Library.$ fn)($ q, $ data... ; $ options... )))
208193 catch e
209194 push! (failures, (e, q))
210195 end
211196 end
212- handle_exceptions (failures, " saving \" $( filename (q))\" " )
197+ handle_exceptions (failures, " saving $( repr ( filename (q))) " )
213198 end
214199end
215200
@@ -224,8 +209,4 @@ function has_method_from(mt, Library)
224209 false
225210end
226211
227- if VERSION < v " 0.5.0-dev+3543"
228- getmodule (m) = m. func. code. module
229- else
230- getmodule (m) = m. module
231- end
212+ getmodule (m) = m. module
0 commit comments