Merge: GitHub api: Issue events, contributor stats, files
[nit.git] / src / frontend / serialization_phase.nit
index 25574e7..78c8c89 100644 (file)
@@ -24,7 +24,10 @@ import modelize
 private import annotation
 
 redef class ToolContext
+       # Generate serialization and deserialization methods on `auto_serializable` annotated classes.
        var serialization_phase_pre_model: Phase = new SerializationPhasePreModel(self, null)
+
+       # The second phase of the serialization
        var serialization_phase_post_model: Phase = new SerializationPhasePostModel(self,
                [modelize_class_phase, serialization_phase_pre_model])
 
@@ -73,7 +76,7 @@ private class SerializationPhasePreModel
                end
        end
 
-       private fun generate_serialization_method(nclassdef: AClassdef)
+       fun generate_serialization_method(nclassdef: AClassdef)
        do
                var npropdefs = nclassdef.n_propdefs
 
@@ -94,7 +97,7 @@ private class SerializationPhasePreModel
        end
 
        # Add a constructor to the automated nclassdef
-       private fun generate_deserialization_init(nclassdef: AClassdef)
+       fun generate_deserialization_init(nclassdef: AClassdef)
        do
                var npropdefs = nclassdef.n_propdefs
 
@@ -122,13 +125,13 @@ private class SerializationPhasePreModel
 
                code.add "end"
 
-               var npropdef = toolcontext.parse_propdef(code.join("\n")).as(AConcreteInitPropdef)
+               var npropdef = toolcontext.parse_propdef(code.join("\n")).as(AMethPropdef)
                npropdefs.add npropdef
                nclassdef.parent.as(AModule).inits_to_retype.add npropdef
        end
 
        # Added to the abstract serialization service
-       private fun generate_deserialization_method(nmodule: AModule, nclassdefs: Array[AStdClassdef])
+       fun generate_deserialization_method(nmodule: AModule, nclassdefs: Array[AStdClassdef])
        do
                var code = new Array[String]
 
@@ -186,17 +189,10 @@ end
 private class PreciseTypeVisitor
        super Visitor
 
-       var npropdef: AConcreteInitPropdef
+       var npropdef: AMethPropdef
        var mclassdef: MClassDef
        var toolcontext: ToolContext
 
-       init(npropdef: AConcreteInitPropdef, mclassdef: MClassDef, toolcontext: ToolContext)
-       do
-               self.npropdef = npropdef
-               self.mclassdef = mclassdef
-               self.toolcontext = toolcontext
-       end
-
        redef fun visit(n) do n.accept_precise_type_visitor(self)
 end
 
@@ -223,8 +219,7 @@ end
 redef class AAttrPropdef
        private fun name: String
        do
-               if n_id == null then return n_id2.text
-               return n_id.text
+               return n_id2.text
        end
 end
 
@@ -256,7 +251,7 @@ redef class AModule
                return null
        end
 
-       private var inits_to_retype = new Array[AConcreteInitPropdef]
+       private var inits_to_retype = new Array[AMethPropdef]
 end
 
 redef class AStdClassdef