Skip to content

Commit 4eed15b

Browse files
include _instance for defaults as well
1 parent 4d1a3ff commit 4eed15b

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

Diff for: src/Serialization/Fields.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ end
183183

184184
################################################################################
185185
# FqField
186-
@register_serialization_type FqField "FiniteField" default uses_id
186+
@register_serialization_type FqField "FiniteField" uses_id
187187
@register_serialization_type FqFieldElem uses_params
188188

189189
function save_object(s::SerializerState, K::FqField)

Diff for: src/Serialization/main.jl

+10-16
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ function save_typed_object(s::SerializerState, x::T) where T
171171
save_object(s, encode_type(T), type_key)
172172
else
173173
type_encoding = encode_type(T)
174-
if !(T == reverse_type_map[type_encoding] || T == reverse_type_map[type_encoding]["default"])
174+
if !(T == reverse_type_map[type_encoding])
175175
# here we get "$T" = "fpField"
176176
# see comment in register_serialization_type
177177
save_object(s, "$T", :_instance)
@@ -222,7 +222,7 @@ function load_typed_object(s::DeserializerState, key::Symbol; override_params::A
222222
end
223223

224224
function load_typed_object(s::DeserializerState; override_params::Any = nothing)
225-
if haskey(s.obj, :_instance)
225+
if !(s.obj isa String) && haskey(s.obj, :_instance)
226226
# to be safe we need this check but there are currently issues
227227
# see register_serialization_type and construction of the reverse type map
228228
#s.obj["_instance"] in keys(reverse_type_map[s.obj[type_key]])
@@ -314,18 +314,16 @@ end
314314

315315
################################################################################
316316
# Type Registration
317-
function register_serialization_type(@nospecialize(T::Type), str::String, default=false)
318-
if haskey(reverse_type_map, str) || default
319-
init = get(reverse_type_map, str, Dict{String, Type}())
317+
function register_serialization_type(@nospecialize(T::Type), str::String)
318+
if haskey(reverse_type_map, str)
319+
init = reverse_type_map[str]
320320
# promote the value to a dictionary if necessary
321321
if init isa Type
322-
init = Dict{String, Type}("$init" => init)
322+
init = Dict{String, Type}(string(init) => init)
323323
end
324324
# here we have "$T" = "Nemo.fpField" for example
325325
# see comment in save_typed_object
326-
key = default ? "default" : "$T"
327-
328-
reverse_type_map[str] = merge(Dict{String, Type}(key => T), init)
326+
reverse_type_map[str] = merge(Dict{String, Type}(string(T) => T), init)
329327
else
330328
reverse_type_map[str] = T
331329
end
@@ -349,12 +347,11 @@ serialize_with_id(::Type) = false
349347
serialize_with_id(obj::Any) = false
350348
serialize_with_params(::Type) = false
351349

352-
353350
function register_serialization_type(ex::Any, str::String, uses_id::Bool,
354-
uses_params::Bool, attrs::Any, default::Bool)
351+
uses_params::Bool, attrs::Any)
355352
return esc(
356353
quote
357-
Oscar.register_serialization_type($ex, $str, $default)
354+
Oscar.register_serialization_type($ex, $str)
358355
Oscar.encode_type(::Type{<:$ex}) = $str
359356
# There exist types where equality cannot be discerned from the serialization
360357
# these types require an id so that equalities can be forced upon load.
@@ -414,7 +411,6 @@ indicates which attributes will be serialized when using save with `with_attrs=t
414411
macro register_serialization_type(ex::Any, args...)
415412
uses_id = false
416413
uses_params = false
417-
default = false
418414
str = nothing
419415
attrs = nothing
420416
for el in args
@@ -424,8 +420,6 @@ macro register_serialization_type(ex::Any, args...)
424420
uses_id = true
425421
elseif el == :uses_params
426422
uses_params = true
427-
elseif el == :default
428-
default = true
429423
else
430424
attrs = el
431425
end
@@ -434,7 +428,7 @@ macro register_serialization_type(ex::Any, args...)
434428
str = string(ex)
435429
end
436430

437-
return register_serialization_type(ex, str, uses_id, uses_params, attrs, default)
431+
return register_serialization_type(ex, str, uses_id, uses_params, attrs)
438432
end
439433

440434

0 commit comments

Comments
 (0)