From: Alexis Laferrière Date: Fri, 29 May 2015 00:47:05 +0000 (-0400) Subject: src/serialization: detect serialize from class, module and attributes X-Git-Tag: v0.7.5~8^2~14 X-Git-Url: http://nitlanguage.org src/serialization: detect serialize from class, module and attributes Signed-off-by: Alexis Laferrière --- diff --git a/src/frontend/serialization_phase.nit b/src/frontend/serialization_phase.nit index ac128c6..7b3e8b8 100644 --- a/src/frontend/serialization_phase.nit +++ b/src/frontend/serialization_phase.nit @@ -116,10 +116,34 @@ private class SerializationPhasePreModel generate_deserialization_init(nclassdef) redef fun process_nclassdef(nclassdef) do + if not nclassdef isa AStdClassdef then return + + # Is there a declaration on the classdef or the module? + var serialize = nclassdef.is_serialize + + if not serialize and not nclassdef.is_noserialize then + # Is the module marked serialize? + serialize = nclassdef.parent.as(AModule).is_serialize + end + + var per_attribute = false + if not serialize then + # Is there an attribute marked serialize? + for npropdef in nclassdef.n_propdefs do + if npropdef.is_serialize then + serialize = true + per_attribute = true + break + end + end + end + + if serialize then # Add `super Serializable` var sc = toolcontext.parse_superclass("Serializable") sc.location = nclassdef.location nclassdef.n_propdefs.add sc + end end redef fun process_nmodule(nmodule)