lib/ropes_debug: Adapted new leaves for to_dot operation.
[nit.git] / c_src / serialization_phase.sep.1.c
1 #include "serialization_phase.sep.0.h"
2 /* method serialization_phase#ToolContext#serialization_phase for (self: ToolContext): Phase */
3 val* serialization_phase__ToolContext__serialization_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_serialization_phase__ToolContext___64dserialization_phase].val; /* @serialization_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @serialization_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 26);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method serialization_phase#ToolContext#serialization_phase for (self: Object): Phase */
17 val* VIRTUAL_serialization_phase__ToolContext__serialization_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = serialization_phase__ToolContext__serialization_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method serialization_phase#ToolContext#serialization_phase= for (self: ToolContext, Phase) */
26 void serialization_phase__ToolContext__serialization_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_serialization_phase__ToolContext___64dserialization_phase].val = p0; /* @serialization_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method serialization_phase#ToolContext#serialization_phase= for (self: Object, Phase) */
31 void VIRTUAL_serialization_phase__ToolContext__serialization_phase_61d(val* self, val* p0) {
32 serialization_phase__ToolContext__serialization_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method serialization_phase#SerializationPhase#process_annotated_node for (self: SerializationPhase, ANode, AAnnotation) */
36 void serialization_phase__SerializationPhase__process_annotated_node(val* self, val* p0, val* p1) {
37 val* var_nclassdef /* var nclassdef: ANode */;
38 val* var_nat /* var nat: AAnnotation */;
39 val* var /* : AAtid */;
40 val* var1 /* : Token */;
41 val* var2 /* : String */;
42 static val* varonce;
43 val* var3 /* : String */;
44 char* var4 /* : NativeString */;
45 long var5 /* : Int */;
46 val* var6 /* : String */;
47 short int var7 /* : Bool */;
48 short int var8 /* : Bool */;
49 int cltype;
50 int idtype;
51 short int var9 /* : Bool */;
52 val* var10 /* : ToolContext */;
53 val* var11 /* : Location */;
54 static val* varonce12;
55 val* var13 /* : String */;
56 char* var14 /* : NativeString */;
57 long var15 /* : Int */;
58 val* var16 /* : String */;
59 var_nclassdef = p0;
60 var_nat = p1;
61 var = ((val* (*)(val*))(var_nat->class->vft[COLOR_parser_nodes__AAnnotation__n_atid]))(var_nat) /* n_atid on <var_nat:AAnnotation>*/;
62 var1 = ((val* (*)(val*))(var->class->vft[COLOR_parser_nodes__AAtid__n_id]))(var) /* n_id on <var:AAtid>*/;
63 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:Token>*/;
64 if (varonce) {
65 var3 = varonce;
66 } else {
67 var4 = "auto_serializable";
68 var5 = 17;
69 var6 = string__NativeString__to_s_with_length(var4, var5);
70 var3 = var6;
71 varonce = var3;
72 }
73 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___33d_61d]))(var2, var3) /* != on <var2:String>*/;
74 if (var7){
75 goto RET_LABEL;
76 } else {
77 }
78 /* <var_nclassdef:ANode> isa AStdClassdef */
79 cltype = type_parser_nodes__AStdClassdef.color;
80 idtype = type_parser_nodes__AStdClassdef.id;
81 if(cltype >= var_nclassdef->type->table_size) {
82 var8 = 0;
83 } else {
84 var8 = var_nclassdef->type->type_table[cltype] == idtype;
85 }
86 var9 = !var8;
87 if (var9){
88 var10 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
89 var11 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:ANode>*/;
90 if (varonce12) {
91 var13 = varonce12;
92 } else {
93 var14 = "Syntax error: only a concrete class can be automatically serialized.";
94 var15 = 68;
95 var16 = string__NativeString__to_s_with_length(var14, var15);
96 var13 = var16;
97 varonce12 = var13;
98 }
99 ((void (*)(val*, val*, val*))(var10->class->vft[COLOR_toolcontext__ToolContext__error]))(var10, var11, var13) /* error on <var10:ToolContext>*/;
100 goto RET_LABEL;
101 } else {
102 }
103 ((void (*)(val*, val*))(self->class->vft[COLOR_serialization_phase__SerializationPhase__generate_serialization_method]))(self, var_nclassdef) /* generate_serialization_method on <self:SerializationPhase>*/;
104 ((void (*)(val*, val*))(self->class->vft[COLOR_serialization_phase__SerializationPhase__generate_deserialization_init]))(self, var_nclassdef) /* generate_deserialization_init on <self:SerializationPhase>*/;
105 RET_LABEL:;
106 }
107 /* method serialization_phase#SerializationPhase#process_annotated_node for (self: Object, ANode, AAnnotation) */
108 void VIRTUAL_serialization_phase__SerializationPhase__process_annotated_node(val* self, val* p0, val* p1) {
109 serialization_phase__SerializationPhase__process_annotated_node(self, p0, p1);
110 RET_LABEL:;
111 }
112 /* method serialization_phase#SerializationPhase#process_nmodule for (self: SerializationPhase, AModule) */
113 void serialization_phase__SerializationPhase__process_nmodule(val* self, val* p0) {
114 val* var_nmodule /* var nmodule: AModule */;
115 val* var /* : Array[AStdClassdef] */;
116 val* var_auto_serializable_nclassdefs /* var auto_serializable_nclassdefs: Array[AStdClassdef] */;
117 val* var1 /* : ANodes[AClassdef] */;
118 val* var2 /* : Iterator[nullable Object] */;
119 short int var3 /* : Bool */;
120 val* var4 /* : nullable Object */;
121 val* var_nclassdef /* var nclassdef: AClassdef */;
122 short int var5 /* : Bool */;
123 short int var6 /* : Bool */;
124 int cltype;
125 int idtype;
126 short int var_ /* var : Bool */;
127 static val* varonce;
128 val* var7 /* : String */;
129 char* var8 /* : NativeString */;
130 long var9 /* : Int */;
131 val* var10 /* : String */;
132 val* var11 /* : Array[AAnnotation] */;
133 short int var12 /* : Bool */;
134 short int var13 /* : Bool */;
135 short int var14 /* : Bool */;
136 short int var15 /* : Bool */;
137 var_nmodule = p0;
138 var = NEW_array__Array(&type_array__Arrayparser_nodes__AStdClassdef);
139 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[AStdClassdef]>*/;
140 var_auto_serializable_nclassdefs = var;
141 var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
142 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:ANodes[AClassdef]>*/;
143 for(;;) {
144 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
145 if(!var3) break;
146 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
147 var_nclassdef = var4;
148 /* <var_nclassdef:AClassdef> isa AStdClassdef */
149 cltype = type_parser_nodes__AStdClassdef.color;
150 idtype = type_parser_nodes__AStdClassdef.id;
151 if(cltype >= var_nclassdef->type->table_size) {
152 var6 = 0;
153 } else {
154 var6 = var_nclassdef->type->type_table[cltype] == idtype;
155 }
156 var_ = var6;
157 if (var6){
158 if (varonce) {
159 var7 = varonce;
160 } else {
161 var8 = "auto_serializable";
162 var9 = 17;
163 var10 = string__NativeString__to_s_with_length(var8, var9);
164 var7 = var10;
165 varonce = var7;
166 }
167 var11 = ((val* (*)(val*, val*))(var_nclassdef->class->vft[COLOR_parser_util__ANode__collect_annotations_by_name]))(var_nclassdef, var7) /* collect_annotations_by_name on <var_nclassdef:AClassdef(AStdClassdef)>*/;
168 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var11) /* is_empty on <var11:Array[AAnnotation]>*/;
169 var13 = !var12;
170 var5 = var13;
171 } else {
172 var5 = var_;
173 }
174 if (var5){
175 ((void (*)(val*, val*))(var_auto_serializable_nclassdefs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_auto_serializable_nclassdefs, var_nclassdef) /* add on <var_auto_serializable_nclassdefs:Array[AStdClassdef]>*/;
176 } else {
177 }
178 CONTINUE_label: (void)0;
179 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
180 }
181 BREAK_label: (void)0;
182 var14 = ((short int (*)(val*))(var_auto_serializable_nclassdefs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_auto_serializable_nclassdefs) /* is_empty on <var_auto_serializable_nclassdefs:Array[AStdClassdef]>*/;
183 var15 = !var14;
184 if (var15){
185 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_serialization_phase__SerializationPhase__generate_deserialization_method]))(self, var_nmodule, var_auto_serializable_nclassdefs) /* generate_deserialization_method on <self:SerializationPhase>*/;
186 } else {
187 }
188 RET_LABEL:;
189 }
190 /* method serialization_phase#SerializationPhase#process_nmodule for (self: Object, AModule) */
191 void VIRTUAL_serialization_phase__SerializationPhase__process_nmodule(val* self, val* p0) {
192 serialization_phase__SerializationPhase__process_nmodule(self, p0);
193 RET_LABEL:;
194 }
195 /* method serialization_phase#SerializationPhase#generate_serialization_method for (self: SerializationPhase, AClassdef) */
196 void serialization_phase__SerializationPhase__generate_serialization_method(val* self, val* p0) {
197 val* var_nclassdef /* var nclassdef: AClassdef */;
198 val* var /* : ANodes[APropdef] */;
199 val* var_npropdefs /* var npropdefs: ANodes[APropdef] */;
200 val* var1 /* : Array[String] */;
201 val* var_code /* var code: Array[String] */;
202 static val* varonce;
203 val* var2 /* : String */;
204 char* var3 /* : NativeString */;
205 long var4 /* : Int */;
206 val* var5 /* : String */;
207 static val* varonce6;
208 val* var7 /* : String */;
209 char* var8 /* : NativeString */;
210 long var9 /* : Int */;
211 val* var10 /* : String */;
212 static val* varonce11;
213 val* var12 /* : String */;
214 char* var13 /* : NativeString */;
215 long var14 /* : Int */;
216 val* var15 /* : String */;
217 val* var16 /* : Iterator[nullable Object] */;
218 short int var17 /* : Bool */;
219 val* var18 /* : nullable Object */;
220 val* var_attribute /* var attribute: APropdef */;
221 short int var19 /* : Bool */;
222 int cltype;
223 int idtype;
224 val* var20 /* : String */;
225 val* var_name /* var name: String */;
226 static val* varonce21;
227 val* var22 /* : String */;
228 char* var23 /* : NativeString */;
229 long var24 /* : Int */;
230 val* var25 /* : String */;
231 static val* varonce26;
232 val* var27 /* : String */;
233 char* var28 /* : NativeString */;
234 long var29 /* : Int */;
235 val* var30 /* : String */;
236 static val* varonce31;
237 val* var32 /* : String */;
238 char* var33 /* : NativeString */;
239 long var34 /* : Int */;
240 val* var35 /* : String */;
241 val* var36 /* : Array[Object] */;
242 long var37 /* : Int */;
243 val* var38 /* : NativeArray[Object] */;
244 val* var39 /* : String */;
245 static val* varonce40;
246 val* var41 /* : String */;
247 char* var42 /* : NativeString */;
248 long var43 /* : Int */;
249 val* var44 /* : String */;
250 val* var45 /* : ToolContext */;
251 static val* varonce46;
252 val* var47 /* : String */;
253 char* var48 /* : NativeString */;
254 long var49 /* : Int */;
255 val* var50 /* : String */;
256 val* var51 /* : String */;
257 val* var52 /* : APropdef */;
258 var_nclassdef = p0;
259 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
260 var_npropdefs = var;
261 var1 = NEW_array__Array(&type_array__Arraystring__String);
262 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[String]>*/;
263 var_code = var1;
264 if (varonce) {
265 var2 = varonce;
266 } else {
267 var3 = "redef fun core_serialize_to(v)";
268 var4 = 30;
269 var5 = string__NativeString__to_s_with_length(var3, var4);
270 var2 = var5;
271 varonce = var2;
272 }
273 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var2) /* add on <var_code:Array[String]>*/;
274 if (varonce6) {
275 var7 = varonce6;
276 } else {
277 var8 = "do";
278 var9 = 2;
279 var10 = string__NativeString__to_s_with_length(var8, var9);
280 var7 = var10;
281 varonce6 = var7;
282 }
283 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var7) /* add on <var_code:Array[String]>*/;
284 if (varonce11) {
285 var12 = varonce11;
286 } else {
287 var13 = "\11super";
288 var14 = 6;
289 var15 = string__NativeString__to_s_with_length(var13, var14);
290 var12 = var15;
291 varonce11 = var12;
292 }
293 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var12) /* add on <var_code:Array[String]>*/;
294 var16 = ((val* (*)(val*))(var_npropdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_npropdefs) /* iterator on <var_npropdefs:ANodes[APropdef]>*/;
295 for(;;) {
296 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
297 if(!var17) break;
298 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
299 var_attribute = var18;
300 /* <var_attribute:APropdef> isa AAttrPropdef */
301 cltype = type_parser_nodes__AAttrPropdef.color;
302 idtype = type_parser_nodes__AAttrPropdef.id;
303 if(cltype >= var_attribute->type->table_size) {
304 var19 = 0;
305 } else {
306 var19 = var_attribute->type->type_table[cltype] == idtype;
307 }
308 if (var19){
309 var20 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_serialization_phase__AAttrPropdef__name]))(var_attribute) /* name on <var_attribute:APropdef(AAttrPropdef)>*/;
310 var_name = var20;
311 if (varonce21) {
312 var22 = varonce21;
313 } else {
314 var23 = "\11v.serialize_attribute(\"";
315 var24 = 24;
316 var25 = string__NativeString__to_s_with_length(var23, var24);
317 var22 = var25;
318 varonce21 = var22;
319 }
320 if (varonce26) {
321 var27 = varonce26;
322 } else {
323 var28 = "\", ";
324 var29 = 3;
325 var30 = string__NativeString__to_s_with_length(var28, var29);
326 var27 = var30;
327 varonce26 = var27;
328 }
329 if (varonce31) {
330 var32 = varonce31;
331 } else {
332 var33 = ")";
333 var34 = 1;
334 var35 = string__NativeString__to_s_with_length(var33, var34);
335 var32 = var35;
336 varonce31 = var32;
337 }
338 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
339 { /* var36 = array_instance Array[Object] */
340 var37 = 5;
341 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
342 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var22;
343 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
344 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var27;
345 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var_name;
346 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var32;
347 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
348 }
349 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
350 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var39) /* add on <var_code:Array[String]>*/;
351 } else {
352 }
353 CONTINUE_label: (void)0;
354 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
355 }
356 BREAK_label: (void)0;
357 if (varonce40) {
358 var41 = varonce40;
359 } else {
360 var42 = "end";
361 var43 = 3;
362 var44 = string__NativeString__to_s_with_length(var42, var43);
363 var41 = var44;
364 varonce40 = var41;
365 }
366 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var41) /* add on <var_code:Array[String]>*/;
367 var45 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
368 if (varonce46) {
369 var47 = varonce46;
370 } else {
371 var48 = "\n";
372 var49 = 1;
373 var50 = string__NativeString__to_s_with_length(var48, var49);
374 var47 = var50;
375 varonce46 = var47;
376 }
377 var51 = ((val* (*)(val*, val*))(var_code->class->vft[COLOR_string__Collection__join]))(var_code, var47) /* join on <var_code:Array[String]>*/;
378 var52 = ((val* (*)(val*, val*))(var45->class->vft[COLOR_parser_util__ToolContext__parse_propdef]))(var45, var51) /* parse_propdef on <var45:ToolContext>*/;
379 ((void (*)(val*, val*))(var_npropdefs->class->vft[COLOR_abstract_collection__Sequence__push]))(var_npropdefs, var52) /* push on <var_npropdefs:ANodes[APropdef]>*/;
380 RET_LABEL:;
381 }
382 /* method serialization_phase#SerializationPhase#generate_serialization_method for (self: Object, AClassdef) */
383 void VIRTUAL_serialization_phase__SerializationPhase__generate_serialization_method(val* self, val* p0) {
384 serialization_phase__SerializationPhase__generate_serialization_method(self, p0);
385 RET_LABEL:;
386 }
387 /* method serialization_phase#SerializationPhase#generate_deserialization_init for (self: SerializationPhase, AClassdef) */
388 void serialization_phase__SerializationPhase__generate_deserialization_init(val* self, val* p0) {
389 val* var_nclassdef /* var nclassdef: AClassdef */;
390 val* var /* : ANodes[APropdef] */;
391 val* var_npropdefs /* var npropdefs: ANodes[APropdef] */;
392 val* var1 /* : Array[String] */;
393 val* var_code /* var code: Array[String] */;
394 static val* varonce;
395 val* var2 /* : String */;
396 char* var3 /* : NativeString */;
397 long var4 /* : Int */;
398 val* var5 /* : String */;
399 static val* varonce6;
400 val* var7 /* : String */;
401 char* var8 /* : NativeString */;
402 long var9 /* : Int */;
403 val* var10 /* : String */;
404 static val* varonce11;
405 val* var12 /* : String */;
406 char* var13 /* : NativeString */;
407 long var14 /* : Int */;
408 val* var15 /* : String */;
409 val* var16 /* : Iterator[nullable Object] */;
410 short int var17 /* : Bool */;
411 val* var18 /* : nullable Object */;
412 val* var_attribute /* var attribute: APropdef */;
413 short int var19 /* : Bool */;
414 int cltype;
415 int idtype;
416 val* var20 /* : nullable AType */;
417 val* var21 /* : null */;
418 short int var22 /* : Bool */;
419 val* var23 /* : ToolContext */;
420 val* var24 /* : Location */;
421 static val* varonce25;
422 val* var26 /* : String */;
423 char* var27 /* : NativeString */;
424 long var28 /* : Int */;
425 val* var29 /* : String */;
426 val* var30 /* : String */;
427 val* var_name /* var name: String */;
428 val* var31 /* : String */;
429 val* var_type_name /* var type_name: String */;
430 static val* varonce32;
431 val* var33 /* : String */;
432 char* var34 /* : NativeString */;
433 long var35 /* : Int */;
434 val* var36 /* : String */;
435 static val* varonce37;
436 val* var38 /* : String */;
437 char* var39 /* : NativeString */;
438 long var40 /* : Int */;
439 val* var41 /* : String */;
440 static val* varonce42;
441 val* var43 /* : String */;
442 char* var44 /* : NativeString */;
443 long var45 /* : Int */;
444 val* var46 /* : String */;
445 static val* varonce47;
446 val* var48 /* : String */;
447 char* var49 /* : NativeString */;
448 long var50 /* : Int */;
449 val* var51 /* : String */;
450 val* var52 /* : Array[Object] */;
451 long var53 /* : Int */;
452 val* var54 /* : NativeArray[Object] */;
453 val* var55 /* : String */;
454 static val* varonce56;
455 val* var57 /* : String */;
456 char* var58 /* : NativeString */;
457 long var59 /* : Int */;
458 val* var60 /* : String */;
459 static val* varonce61;
460 val* var62 /* : String */;
461 char* var63 /* : NativeString */;
462 long var64 /* : Int */;
463 val* var65 /* : String */;
464 static val* varonce66;
465 val* var67 /* : String */;
466 char* var68 /* : NativeString */;
467 long var69 /* : Int */;
468 val* var70 /* : String */;
469 static val* varonce71;
470 val* var72 /* : String */;
471 char* var73 /* : NativeString */;
472 long var74 /* : Int */;
473 val* var75 /* : String */;
474 static val* varonce76;
475 val* var77 /* : String */;
476 char* var78 /* : NativeString */;
477 long var79 /* : Int */;
478 val* var80 /* : String */;
479 val* var81 /* : Array[Object] */;
480 long var82 /* : Int */;
481 val* var83 /* : NativeArray[Object] */;
482 val* var84 /* : String */;
483 static val* varonce85;
484 val* var86 /* : String */;
485 char* var87 /* : NativeString */;
486 long var88 /* : Int */;
487 val* var89 /* : String */;
488 static val* varonce90;
489 val* var91 /* : String */;
490 char* var92 /* : NativeString */;
491 long var93 /* : Int */;
492 val* var94 /* : String */;
493 val* var95 /* : Array[Object] */;
494 long var96 /* : Int */;
495 val* var97 /* : NativeArray[Object] */;
496 val* var98 /* : String */;
497 static val* varonce99;
498 val* var100 /* : String */;
499 char* var101 /* : NativeString */;
500 long var102 /* : Int */;
501 val* var103 /* : String */;
502 val* var104 /* : ToolContext */;
503 static val* varonce105;
504 val* var106 /* : String */;
505 char* var107 /* : NativeString */;
506 long var108 /* : Int */;
507 val* var109 /* : String */;
508 val* var110 /* : String */;
509 val* var111 /* : APropdef */;
510 var_nclassdef = p0;
511 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
512 var_npropdefs = var;
513 var1 = NEW_array__Array(&type_array__Arraystring__String);
514 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[String]>*/;
515 var_code = var1;
516 if (varonce) {
517 var2 = varonce;
518 } else {
519 var3 = "init from_deserializer(v: Deserializer)";
520 var4 = 39;
521 var5 = string__NativeString__to_s_with_length(var3, var4);
522 var2 = var5;
523 varonce = var2;
524 }
525 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var2) /* add on <var_code:Array[String]>*/;
526 if (varonce6) {
527 var7 = varonce6;
528 } else {
529 var8 = "do";
530 var9 = 2;
531 var10 = string__NativeString__to_s_with_length(var8, var9);
532 var7 = var10;
533 varonce6 = var7;
534 }
535 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var7) /* add on <var_code:Array[String]>*/;
536 if (varonce11) {
537 var12 = varonce11;
538 } else {
539 var13 = "\11v.notify_of_creation self";
540 var14 = 26;
541 var15 = string__NativeString__to_s_with_length(var13, var14);
542 var12 = var15;
543 varonce11 = var12;
544 }
545 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var12) /* add on <var_code:Array[String]>*/;
546 var16 = ((val* (*)(val*))(var_npropdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_npropdefs) /* iterator on <var_npropdefs:ANodes[APropdef]>*/;
547 for(;;) {
548 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
549 if(!var17) break;
550 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
551 var_attribute = var18;
552 /* <var_attribute:APropdef> isa AAttrPropdef */
553 cltype = type_parser_nodes__AAttrPropdef.color;
554 idtype = type_parser_nodes__AAttrPropdef.id;
555 if(cltype >= var_attribute->type->table_size) {
556 var19 = 0;
557 } else {
558 var19 = var_attribute->type->type_table[cltype] == idtype;
559 }
560 if (var19){
561 var20 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(var_attribute) /* n_type on <var_attribute:APropdef(AAttrPropdef)>*/;
562 var21 = NULL;
563 if (var20 == NULL) {
564 var22 = 1; /* is null */
565 } else {
566 var22 = 0; /* arg is null but recv is not */
567 }
568 if (var22){
569 var23 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
570 var24 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_parser_nodes__ANode__location]))(var_attribute) /* location on <var_attribute:APropdef(AAttrPropdef)>*/;
571 if (varonce25) {
572 var26 = varonce25;
573 } else {
574 var27 = "NOT YET IMPLEMENTED: all attributes of an auto_serialized class definition must define a type.";
575 var28 = 94;
576 var29 = string__NativeString__to_s_with_length(var27, var28);
577 var26 = var29;
578 varonce25 = var26;
579 }
580 ((void (*)(val*, val*, val*))(var23->class->vft[COLOR_toolcontext__ToolContext__error]))(var23, var24, var26) /* error on <var23:ToolContext>*/;
581 goto CONTINUE_label;
582 } else {
583 }
584 var30 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_serialization_phase__AAttrPropdef__name]))(var_attribute) /* name on <var_attribute:APropdef(AAttrPropdef)>*/;
585 var_name = var30;
586 var31 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_serialization_phase__AAttrPropdef__type_name]))(var_attribute) /* type_name on <var_attribute:APropdef(AAttrPropdef)>*/;
587 var_type_name = var31;
588 if (varonce32) {
589 var33 = varonce32;
590 } else {
591 var34 = "";
592 var35 = 0;
593 var36 = string__NativeString__to_s_with_length(var34, var35);
594 var33 = var36;
595 varonce32 = var33;
596 }
597 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var33) /* add on <var_code:Array[String]>*/;
598 if (varonce37) {
599 var38 = varonce37;
600 } else {
601 var39 = "\11var ";
602 var40 = 5;
603 var41 = string__NativeString__to_s_with_length(var39, var40);
604 var38 = var41;
605 varonce37 = var38;
606 }
607 if (varonce42) {
608 var43 = varonce42;
609 } else {
610 var44 = " = v.deserialize_attribute(\"";
611 var45 = 28;
612 var46 = string__NativeString__to_s_with_length(var44, var45);
613 var43 = var46;
614 varonce42 = var43;
615 }
616 if (varonce47) {
617 var48 = varonce47;
618 } else {
619 var49 = "\")";
620 var50 = 2;
621 var51 = string__NativeString__to_s_with_length(var49, var50);
622 var48 = var51;
623 varonce47 = var48;
624 }
625 var52 = NEW_array__Array(&type_array__Arraykernel__Object);
626 { /* var52 = array_instance Array[Object] */
627 var53 = 5;
628 var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
629 ((struct instance_array__NativeArray*)var54)->values[0] = (val*) var38;
630 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var_name;
631 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var43;
632 ((struct instance_array__NativeArray*)var54)->values[3] = (val*) var_name;
633 ((struct instance_array__NativeArray*)var54)->values[4] = (val*) var48;
634 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
635 }
636 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
637 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var55) /* add on <var_code:Array[String]>*/;
638 if (varonce56) {
639 var57 = varonce56;
640 } else {
641 var58 = "\11assert ";
642 var59 = 8;
643 var60 = string__NativeString__to_s_with_length(var58, var59);
644 var57 = var60;
645 varonce56 = var57;
646 }
647 if (varonce61) {
648 var62 = varonce61;
649 } else {
650 var63 = " isa ";
651 var64 = 5;
652 var65 = string__NativeString__to_s_with_length(var63, var64);
653 var62 = var65;
654 varonce61 = var62;
655 }
656 if (varonce66) {
657 var67 = varonce66;
658 } else {
659 var68 = " else print \"Expected attribute \'";
660 var69 = 33;
661 var70 = string__NativeString__to_s_with_length(var68, var69);
662 var67 = var70;
663 varonce66 = var67;
664 }
665 if (varonce71) {
666 var72 = varonce71;
667 } else {
668 var73 = "\' to be of type \'";
669 var74 = 17;
670 var75 = string__NativeString__to_s_with_length(var73, var74);
671 var72 = var75;
672 varonce71 = var72;
673 }
674 if (varonce76) {
675 var77 = varonce76;
676 } else {
677 var78 = "\'\"";
678 var79 = 2;
679 var80 = string__NativeString__to_s_with_length(var78, var79);
680 var77 = var80;
681 varonce76 = var77;
682 }
683 var81 = NEW_array__Array(&type_array__Arraykernel__Object);
684 { /* var81 = array_instance Array[Object] */
685 var82 = 9;
686 var83 = NEW_array__NativeArray(var82, &type_array__NativeArraykernel__Object);
687 ((struct instance_array__NativeArray*)var83)->values[0] = (val*) var57;
688 ((struct instance_array__NativeArray*)var83)->values[1] = (val*) var_name;
689 ((struct instance_array__NativeArray*)var83)->values[2] = (val*) var62;
690 ((struct instance_array__NativeArray*)var83)->values[3] = (val*) var_type_name;
691 ((struct instance_array__NativeArray*)var83)->values[4] = (val*) var67;
692 ((struct instance_array__NativeArray*)var83)->values[5] = (val*) var_name;
693 ((struct instance_array__NativeArray*)var83)->values[6] = (val*) var72;
694 ((struct instance_array__NativeArray*)var83)->values[7] = (val*) var_type_name;
695 ((struct instance_array__NativeArray*)var83)->values[8] = (val*) var77;
696 ((void (*)(val*, val*, long))(var81->class->vft[COLOR_array__Array__with_native]))(var81, var83, var82) /* with_native on <var81:Array[Object]>*/;
697 }
698 var84 = ((val* (*)(val*))(var81->class->vft[COLOR_string__Object__to_s]))(var81) /* to_s on <var81:Array[Object]>*/;
699 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var84) /* add on <var_code:Array[String]>*/;
700 if (varonce85) {
701 var86 = varonce85;
702 } else {
703 var87 = "\11self.";
704 var88 = 6;
705 var89 = string__NativeString__to_s_with_length(var87, var88);
706 var86 = var89;
707 varonce85 = var86;
708 }
709 if (varonce90) {
710 var91 = varonce90;
711 } else {
712 var92 = " = ";
713 var93 = 3;
714 var94 = string__NativeString__to_s_with_length(var92, var93);
715 var91 = var94;
716 varonce90 = var91;
717 }
718 var95 = NEW_array__Array(&type_array__Arraykernel__Object);
719 { /* var95 = array_instance Array[Object] */
720 var96 = 4;
721 var97 = NEW_array__NativeArray(var96, &type_array__NativeArraykernel__Object);
722 ((struct instance_array__NativeArray*)var97)->values[0] = (val*) var86;
723 ((struct instance_array__NativeArray*)var97)->values[1] = (val*) var_name;
724 ((struct instance_array__NativeArray*)var97)->values[2] = (val*) var91;
725 ((struct instance_array__NativeArray*)var97)->values[3] = (val*) var_name;
726 ((void (*)(val*, val*, long))(var95->class->vft[COLOR_array__Array__with_native]))(var95, var97, var96) /* with_native on <var95:Array[Object]>*/;
727 }
728 var98 = ((val* (*)(val*))(var95->class->vft[COLOR_string__Object__to_s]))(var95) /* to_s on <var95:Array[Object]>*/;
729 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var98) /* add on <var_code:Array[String]>*/;
730 } else {
731 }
732 CONTINUE_label: (void)0;
733 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
734 }
735 BREAK_label: (void)0;
736 if (varonce99) {
737 var100 = varonce99;
738 } else {
739 var101 = "end";
740 var102 = 3;
741 var103 = string__NativeString__to_s_with_length(var101, var102);
742 var100 = var103;
743 varonce99 = var100;
744 }
745 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var100) /* add on <var_code:Array[String]>*/;
746 var104 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
747 if (varonce105) {
748 var106 = varonce105;
749 } else {
750 var107 = "\n";
751 var108 = 1;
752 var109 = string__NativeString__to_s_with_length(var107, var108);
753 var106 = var109;
754 varonce105 = var106;
755 }
756 var110 = ((val* (*)(val*, val*))(var_code->class->vft[COLOR_string__Collection__join]))(var_code, var106) /* join on <var_code:Array[String]>*/;
757 var111 = ((val* (*)(val*, val*))(var104->class->vft[COLOR_parser_util__ToolContext__parse_propdef]))(var104, var110) /* parse_propdef on <var104:ToolContext>*/;
758 ((void (*)(val*, val*))(var_npropdefs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_npropdefs, var111) /* add on <var_npropdefs:ANodes[APropdef]>*/;
759 RET_LABEL:;
760 }
761 /* method serialization_phase#SerializationPhase#generate_deserialization_init for (self: Object, AClassdef) */
762 void VIRTUAL_serialization_phase__SerializationPhase__generate_deserialization_init(val* self, val* p0) {
763 serialization_phase__SerializationPhase__generate_deserialization_init(self, p0);
764 RET_LABEL:;
765 }
766 /* method serialization_phase#SerializationPhase#generate_deserialization_method for (self: SerializationPhase, AModule, Array[AStdClassdef]) */
767 void serialization_phase__SerializationPhase__generate_deserialization_method(val* self, val* p0, val* p1) {
768 val* var_nmodule /* var nmodule: AModule */;
769 val* var_nclassdefs /* var nclassdefs: Array[AStdClassdef] */;
770 val* var /* : Array[String] */;
771 val* var_code /* var code: Array[String] */;
772 val* var1 /* : nullable AStdClassdef */;
773 val* var_deserializer_nclassdef /* var deserializer_nclassdef: nullable AStdClassdef */;
774 val* var2 /* : null */;
775 short int var3 /* : Bool */;
776 static val* varonce;
777 val* var4 /* : String */;
778 char* var5 /* : NativeString */;
779 long var6 /* : Int */;
780 val* var7 /* : String */;
781 val* var8 /* : null */;
782 val* var_deserializer_npropdef /* var deserializer_npropdef: nullable Object */;
783 val* var9 /* : nullable AMethPropdef */;
784 val* var10 /* : null */;
785 short int var11 /* : Bool */;
786 static val* varonce12;
787 val* var13 /* : String */;
788 char* var14 /* : NativeString */;
789 long var15 /* : Int */;
790 val* var16 /* : String */;
791 static val* varonce17;
792 val* var18 /* : String */;
793 char* var19 /* : NativeString */;
794 long var20 /* : Int */;
795 val* var21 /* : String */;
796 val* var22 /* : ToolContext */;
797 val* var23 /* : Location */;
798 static val* varonce24;
799 val* var25 /* : String */;
800 char* var26 /* : NativeString */;
801 long var27 /* : Int */;
802 val* var28 /* : String */;
803 val* var29 /* : Iterator[nullable Object] */;
804 short int var30 /* : Bool */;
805 val* var31 /* : nullable Object */;
806 val* var_nclassdef /* var nclassdef: AStdClassdef */;
807 val* var32 /* : nullable TClassid */;
808 val* var33 /* : String */;
809 val* var_name /* var name: String */;
810 char var34 /* : Char */;
811 short int var35 /* : Bool */;
812 val* var36 /* : nullable Object */;
813 short int var37 /* : Bool */;
814 static val* varonce38;
815 val* var39 /* : String */;
816 char* var40 /* : NativeString */;
817 long var41 /* : Int */;
818 val* var42 /* : String */;
819 static val* varonce43;
820 val* var44 /* : String */;
821 char* var45 /* : NativeString */;
822 long var46 /* : Int */;
823 val* var47 /* : String */;
824 static val* varonce48;
825 val* var49 /* : String */;
826 char* var50 /* : NativeString */;
827 long var51 /* : Int */;
828 val* var52 /* : String */;
829 val* var53 /* : Array[Object] */;
830 long var54 /* : Int */;
831 val* var55 /* : NativeArray[Object] */;
832 val* var56 /* : String */;
833 static val* varonce57;
834 val* var58 /* : String */;
835 char* var59 /* : NativeString */;
836 long var60 /* : Int */;
837 val* var61 /* : String */;
838 static val* varonce62;
839 val* var63 /* : String */;
840 char* var64 /* : NativeString */;
841 long var65 /* : Int */;
842 val* var66 /* : String */;
843 val* var67 /* : null */;
844 short int var68 /* : Bool */;
845 static val* varonce69;
846 val* var70 /* : String */;
847 char* var71 /* : NativeString */;
848 long var72 /* : Int */;
849 val* var73 /* : String */;
850 val* var74 /* : ANodes[AClassdef] */;
851 val* var75 /* : ToolContext */;
852 static val* varonce76;
853 val* var77 /* : String */;
854 char* var78 /* : NativeString */;
855 long var79 /* : Int */;
856 val* var80 /* : String */;
857 val* var81 /* : String */;
858 val* var82 /* : AClassdef */;
859 val* var83 /* : ANodes[APropdef] */;
860 val* var84 /* : ToolContext */;
861 static val* varonce85;
862 val* var86 /* : String */;
863 char* var87 /* : NativeString */;
864 long var88 /* : Int */;
865 val* var89 /* : String */;
866 val* var90 /* : String */;
867 val* var91 /* : APropdef */;
868 var_nmodule = p0;
869 var_nclassdefs = p1;
870 var = NEW_array__Array(&type_array__Arraystring__String);
871 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[String]>*/;
872 var_code = var;
873 var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_serialization_phase__AModule__deserializer_nclassdef]))(var_nmodule) /* deserializer_nclassdef on <var_nmodule:AModule>*/;
874 var_deserializer_nclassdef = var1;
875 var2 = NULL;
876 if (var_deserializer_nclassdef == NULL) {
877 var3 = 1; /* is null */
878 } else {
879 var3 = 0; /* arg is null but recv is not */
880 }
881 if (var3){
882 if (varonce) {
883 var4 = varonce;
884 } else {
885 var5 = "redef class Deserializer";
886 var6 = 24;
887 var7 = string__NativeString__to_s_with_length(var5, var6);
888 var4 = var7;
889 varonce = var4;
890 }
891 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var4) /* add on <var_code:Array[String]>*/;
892 var8 = NULL;
893 var_deserializer_npropdef = var8;
894 } else {
895 var9 = ((val* (*)(val*))(var_deserializer_nclassdef->class->vft[COLOR_serialization_phase__AStdClassdef__deserializer_npropdef]))(var_deserializer_nclassdef) /* deserializer_npropdef on <var_deserializer_nclassdef:nullable AStdClassdef(AStdClassdef)>*/;
896 var_deserializer_npropdef = var9;
897 }
898 var10 = NULL;
899 if (var_deserializer_npropdef == NULL) {
900 var11 = 1; /* is null */
901 } else {
902 var11 = 0; /* arg is null but recv is not */
903 }
904 if (var11){
905 if (varonce12) {
906 var13 = varonce12;
907 } else {
908 var14 = "\11redef fun deserialize_class(name)";
909 var15 = 34;
910 var16 = string__NativeString__to_s_with_length(var14, var15);
911 var13 = var16;
912 varonce12 = var13;
913 }
914 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var13) /* add on <var_code:Array[String]>*/;
915 if (varonce17) {
916 var18 = varonce17;
917 } else {
918 var19 = "\11do";
919 var20 = 3;
920 var21 = string__NativeString__to_s_with_length(var19, var20);
921 var18 = var21;
922 varonce17 = var18;
923 }
924 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var18) /* add on <var_code:Array[String]>*/;
925 } else {
926 var22 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
927 var23 = ((val* (*)(val*))(var_deserializer_npropdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_deserializer_npropdef) /* location on <var_deserializer_npropdef:nullable Object(AMethPropdef)>*/;
928 if (varonce24) {
929 var25 = varonce24;
930 } else {
931 var26 = "Annotation error: you cannont define Deserializer::deserialize_class in a module where you use \"auto_serializable\".";
932 var27 = 115;
933 var28 = string__NativeString__to_s_with_length(var26, var27);
934 var25 = var28;
935 varonce24 = var25;
936 }
937 ((void (*)(val*, val*, val*))(var22->class->vft[COLOR_toolcontext__ToolContext__error]))(var22, var23, var25) /* error on <var22:ToolContext>*/;
938 goto RET_LABEL;
939 }
940 var29 = ((val* (*)(val*))(var_nclassdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_nclassdefs) /* iterator on <var_nclassdefs:Array[AStdClassdef]>*/;
941 for(;;) {
942 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
943 if(!var30) break;
944 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
945 var_nclassdef = var31;
946 var32 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_id]))(var_nclassdef) /* n_id on <var_nclassdef:AStdClassdef>*/;
947 if (var32 == NULL) {
948 fprintf(stderr, "Runtime error: %s", "Receiver is null");
949 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 137);
950 show_backtrace(1);
951 } else {
952 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_parser_nodes__Token__text]))(var32) /* text on <var32:nullable TClassid>*/;
953 }
954 var_name = var33;
955 var34 = '[';
956 var36 = BOX_kernel__Char(var34); /* autobox from Char to nullable Object */
957 var35 = ((short int (*)(val*, val*))(var_name->class->vft[COLOR_abstract_collection__Collection__has]))(var_name, var36) /* has on <var_name:String>*/;
958 var37 = !var35;
959 if (var37){
960 if (varonce38) {
961 var39 = varonce38;
962 } else {
963 var40 = "\11\11if name == \"";
964 var41 = 14;
965 var42 = string__NativeString__to_s_with_length(var40, var41);
966 var39 = var42;
967 varonce38 = var39;
968 }
969 if (varonce43) {
970 var44 = varonce43;
971 } else {
972 var45 = "\" then return new ";
973 var46 = 18;
974 var47 = string__NativeString__to_s_with_length(var45, var46);
975 var44 = var47;
976 varonce43 = var44;
977 }
978 if (varonce48) {
979 var49 = varonce48;
980 } else {
981 var50 = ".from_deserializer(self)";
982 var51 = 24;
983 var52 = string__NativeString__to_s_with_length(var50, var51);
984 var49 = var52;
985 varonce48 = var49;
986 }
987 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
988 { /* var53 = array_instance Array[Object] */
989 var54 = 5;
990 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
991 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var39;
992 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_name;
993 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var44;
994 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var_name;
995 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var49;
996 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
997 }
998 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
999 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var56) /* add on <var_code:Array[String]>*/;
1000 } else {
1001 }
1002 CONTINUE_label: (void)0;
1003 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
1004 }
1005 BREAK_label: (void)0;
1006 if (varonce57) {
1007 var58 = varonce57;
1008 } else {
1009 var59 = "\11\11return super";
1010 var60 = 14;
1011 var61 = string__NativeString__to_s_with_length(var59, var60);
1012 var58 = var61;
1013 varonce57 = var58;
1014 }
1015 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var58) /* add on <var_code:Array[String]>*/;
1016 if (varonce62) {
1017 var63 = varonce62;
1018 } else {
1019 var64 = "\11end";
1020 var65 = 4;
1021 var66 = string__NativeString__to_s_with_length(var64, var65);
1022 var63 = var66;
1023 varonce62 = var63;
1024 }
1025 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var63) /* add on <var_code:Array[String]>*/;
1026 var67 = NULL;
1027 if (var_deserializer_nclassdef == NULL) {
1028 var68 = 1; /* is null */
1029 } else {
1030 var68 = 0; /* arg is null but recv is not */
1031 }
1032 if (var68){
1033 if (varonce69) {
1034 var70 = varonce69;
1035 } else {
1036 var71 = "end";
1037 var72 = 3;
1038 var73 = string__NativeString__to_s_with_length(var71, var72);
1039 var70 = var73;
1040 varonce69 = var70;
1041 }
1042 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var70) /* add on <var_code:Array[String]>*/;
1043 var74 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
1044 var75 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
1045 if (varonce76) {
1046 var77 = varonce76;
1047 } else {
1048 var78 = "\n";
1049 var79 = 1;
1050 var80 = string__NativeString__to_s_with_length(var78, var79);
1051 var77 = var80;
1052 varonce76 = var77;
1053 }
1054 var81 = ((val* (*)(val*, val*))(var_code->class->vft[COLOR_string__Collection__join]))(var_code, var77) /* join on <var_code:Array[String]>*/;
1055 var82 = ((val* (*)(val*, val*))(var75->class->vft[COLOR_parser_util__ToolContext__parse_classdef]))(var75, var81) /* parse_classdef on <var75:ToolContext>*/;
1056 ((void (*)(val*, val*))(var74->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var74, var82) /* add on <var74:ANodes[AClassdef]>*/;
1057 } else {
1058 var83 = ((val* (*)(val*))(var_deserializer_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_deserializer_nclassdef) /* n_propdefs on <var_deserializer_nclassdef:nullable AStdClassdef(AStdClassdef)>*/;
1059 var84 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
1060 if (varonce85) {
1061 var86 = varonce85;
1062 } else {
1063 var87 = "\n";
1064 var88 = 1;
1065 var89 = string__NativeString__to_s_with_length(var87, var88);
1066 var86 = var89;
1067 varonce85 = var86;
1068 }
1069 var90 = ((val* (*)(val*, val*))(var_code->class->vft[COLOR_string__Collection__join]))(var_code, var86) /* join on <var_code:Array[String]>*/;
1070 var91 = ((val* (*)(val*, val*))(var84->class->vft[COLOR_parser_util__ToolContext__parse_propdef]))(var84, var90) /* parse_propdef on <var84:ToolContext>*/;
1071 ((void (*)(val*, val*))(var83->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var83, var91) /* add on <var83:ANodes[APropdef]>*/;
1072 }
1073 RET_LABEL:;
1074 }
1075 /* method serialization_phase#SerializationPhase#generate_deserialization_method for (self: Object, AModule, Array[AStdClassdef]) */
1076 void VIRTUAL_serialization_phase__SerializationPhase__generate_deserialization_method(val* self, val* p0, val* p1) {
1077 serialization_phase__SerializationPhase__generate_deserialization_method(self, p0, p1);
1078 RET_LABEL:;
1079 }
1080 /* method serialization_phase#AAttrPropdef#name for (self: AAttrPropdef): String */
1081 val* serialization_phase__AAttrPropdef__name(val* self) {
1082 val* var /* : String */;
1083 val* var1 /* : nullable TAttrid */;
1084 val* var2 /* : null */;
1085 short int var3 /* : Bool */;
1086 val* var4 /* : nullable TId */;
1087 val* var5 /* : String */;
1088 val* var6 /* : nullable TAttrid */;
1089 val* var7 /* : String */;
1090 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
1091 var2 = NULL;
1092 if (var1 == NULL) {
1093 var3 = 1; /* is null */
1094 } else {
1095 var3 = 0; /* arg is null but recv is not */
1096 }
1097 if (var3){
1098 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
1099 if (var4 == NULL) {
1100 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1101 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 158);
1102 show_backtrace(1);
1103 } else {
1104 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__Token__text]))(var4) /* text on <var4:nullable TId>*/;
1105 }
1106 var = var5;
1107 goto RET_LABEL;
1108 } else {
1109 }
1110 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
1111 if (var6 == NULL) {
1112 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1113 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 159);
1114 show_backtrace(1);
1115 } else {
1116 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_parser_nodes__Token__text]))(var6) /* text on <var6:nullable TAttrid>*/;
1117 }
1118 var = var7;
1119 goto RET_LABEL;
1120 RET_LABEL:;
1121 return var;
1122 }
1123 /* method serialization_phase#AAttrPropdef#name for (self: Object): String */
1124 val* VIRTUAL_serialization_phase__AAttrPropdef__name(val* self) {
1125 val* var /* : String */;
1126 val* var1 /* : String */;
1127 var1 = serialization_phase__AAttrPropdef__name(self);
1128 var = var1;
1129 RET_LABEL:;
1130 return var;
1131 }
1132 /* method serialization_phase#AAttrPropdef#type_name for (self: AAttrPropdef): String */
1133 val* serialization_phase__AAttrPropdef__type_name(val* self) {
1134 val* var /* : String */;
1135 val* var1 /* : nullable AType */;
1136 val* var2 /* : TClassid */;
1137 val* var3 /* : String */;
1138 val* var_name /* var name: String */;
1139 val* var4 /* : nullable AType */;
1140 val* var5 /* : nullable TKwnullable */;
1141 val* var6 /* : null */;
1142 short int var7 /* : Bool */;
1143 val* var8 /* : Array[Object] */;
1144 long var9 /* : Int */;
1145 val* var_ /* var : Array[Object] */;
1146 static val* varonce;
1147 val* var10 /* : String */;
1148 char* var11 /* : NativeString */;
1149 long var12 /* : Int */;
1150 val* var13 /* : String */;
1151 static val* varonce14;
1152 val* var15 /* : String */;
1153 char* var16 /* : NativeString */;
1154 long var17 /* : Int */;
1155 val* var18 /* : String */;
1156 val* var19 /* : String */;
1157 val* var20 /* : nullable AType */;
1158 val* var21 /* : ANodes[AType] */;
1159 val* var_types /* var types: ANodes[AType] */;
1160 short int var22 /* : Bool */;
1161 short int var23 /* : Bool */;
1162 val* var24 /* : Array[String] */;
1163 val* var_params /* var params: Array[String] */;
1164 val* var25 /* : Iterator[nullable Object] */;
1165 short int var26 /* : Bool */;
1166 val* var27 /* : nullable Object */;
1167 val* var_t /* var t: AType */;
1168 val* var28 /* : TClassid */;
1169 val* var29 /* : String */;
1170 val* var30 /* : Array[Object] */;
1171 long var31 /* : Int */;
1172 val* var_32 /* var : Array[Object] */;
1173 static val* varonce33;
1174 val* var34 /* : String */;
1175 char* var35 /* : NativeString */;
1176 long var36 /* : Int */;
1177 val* var37 /* : String */;
1178 static val* varonce38;
1179 val* var39 /* : String */;
1180 char* var40 /* : NativeString */;
1181 long var41 /* : Int */;
1182 val* var42 /* : String */;
1183 static val* varonce43;
1184 val* var44 /* : String */;
1185 char* var45 /* : NativeString */;
1186 long var46 /* : Int */;
1187 val* var47 /* : String */;
1188 val* var48 /* : String */;
1189 static val* varonce49;
1190 val* var50 /* : String */;
1191 char* var51 /* : NativeString */;
1192 long var52 /* : Int */;
1193 val* var53 /* : String */;
1194 val* var54 /* : String */;
1195 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(self) /* n_type on <self:AAttrPropdef>*/;
1196 if (var1 == NULL) {
1197 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1198 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 164);
1199 show_backtrace(1);
1200 } else {
1201 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__AType__n_id]))(var1) /* n_id on <var1:nullable AType>*/;
1202 }
1203 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_parser_nodes__Token__text]))(var2) /* text on <var2:TClassid>*/;
1204 var_name = var3;
1205 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(self) /* n_type on <self:AAttrPropdef>*/;
1206 if (var4 == NULL) {
1207 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1208 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 166);
1209 show_backtrace(1);
1210 } else {
1211 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__AType__n_kwnullable]))(var4) /* n_kwnullable on <var4:nullable AType>*/;
1212 }
1213 var6 = NULL;
1214 if (var5 == NULL) {
1215 var7 = 0; /* is null */
1216 } else {
1217 var7 = 1; /* arg is null and recv is not */
1218 }
1219 if (var7){
1220 var8 = NEW_array__Array(&type_array__Arraykernel__Object);
1221 var9 = 3;
1222 ((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[Object]>*/;
1223 var_ = var8;
1224 if (varonce) {
1225 var10 = varonce;
1226 } else {
1227 var11 = "nullable ";
1228 var12 = 9;
1229 var13 = string__NativeString__to_s_with_length(var11, var12);
1230 var10 = var13;
1231 varonce = var10;
1232 }
1233 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1234 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_name) /* add on <var_:Array[Object]>*/;
1235 if (varonce14) {
1236 var15 = varonce14;
1237 } else {
1238 var16 = "";
1239 var17 = 0;
1240 var18 = string__NativeString__to_s_with_length(var16, var17);
1241 var15 = var18;
1242 varonce14 = var15;
1243 }
1244 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
1245 var19 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1246 var_name = var19;
1247 } else {
1248 }
1249 var20 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(self) /* n_type on <self:AAttrPropdef>*/;
1250 if (var20 == NULL) {
1251 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1252 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 168);
1253 show_backtrace(1);
1254 } else {
1255 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_parser_nodes__AType__n_types]))(var20) /* n_types on <var20:nullable AType>*/;
1256 }
1257 var_types = var21;
1258 var22 = ((short int (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_types) /* is_empty on <var_types:ANodes[AType]>*/;
1259 var23 = !var22;
1260 if (var23){
1261 var24 = NEW_array__Array(&type_array__Arraystring__String);
1262 ((void (*)(val*))(var24->class->vft[COLOR_array__Array__init]))(var24) /* init on <var24:Array[String]>*/;
1263 var_params = var24;
1264 var25 = ((val* (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_types) /* iterator on <var_types:ANodes[AType]>*/;
1265 for(;;) {
1266 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
1267 if(!var26) break;
1268 var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on <var25:Iterator[nullable Object]>*/;
1269 var_t = var27;
1270 var28 = ((val* (*)(val*))(var_t->class->vft[COLOR_parser_nodes__AType__n_id]))(var_t) /* n_id on <var_t:AType>*/;
1271 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_parser_nodes__Token__text]))(var28) /* text on <var28:TClassid>*/;
1272 ((void (*)(val*, val*))(var_params->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_params, var29) /* add on <var_params:Array[String]>*/;
1273 CONTINUE_label: (void)0;
1274 ((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on <var25:Iterator[nullable Object]>*/;
1275 }
1276 BREAK_label: (void)0;
1277 var30 = NEW_array__Array(&type_array__Arraykernel__Object);
1278 var31 = 5;
1279 ((void (*)(val*, long))(var30->class->vft[COLOR_array__Array__with_capacity]))(var30, var31) /* with_capacity on <var30:Array[Object]>*/;
1280 var_32 = var30;
1281 if (varonce33) {
1282 var34 = varonce33;
1283 } else {
1284 var35 = "";
1285 var36 = 0;
1286 var37 = string__NativeString__to_s_with_length(var35, var36);
1287 var34 = var37;
1288 varonce33 = var34;
1289 }
1290 ((void (*)(val*, val*))(var_32->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_32, var34) /* add on <var_32:Array[Object]>*/;
1291 ((void (*)(val*, val*))(var_32->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_32, var_name) /* add on <var_32:Array[Object]>*/;
1292 if (varonce38) {
1293 var39 = varonce38;
1294 } else {
1295 var40 = "[";
1296 var41 = 1;
1297 var42 = string__NativeString__to_s_with_length(var40, var41);
1298 var39 = var42;
1299 varonce38 = var39;
1300 }
1301 ((void (*)(val*, val*))(var_32->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_32, var39) /* add on <var_32:Array[Object]>*/;
1302 if (varonce43) {
1303 var44 = varonce43;
1304 } else {
1305 var45 = ", ";
1306 var46 = 2;
1307 var47 = string__NativeString__to_s_with_length(var45, var46);
1308 var44 = var47;
1309 varonce43 = var44;
1310 }
1311 var48 = ((val* (*)(val*, val*))(var_params->class->vft[COLOR_string__Collection__join]))(var_params, var44) /* join on <var_params:Array[String]>*/;
1312 ((void (*)(val*, val*))(var_32->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_32, var48) /* add on <var_32:Array[Object]>*/;
1313 if (varonce49) {
1314 var50 = varonce49;
1315 } else {
1316 var51 = "]";
1317 var52 = 1;
1318 var53 = string__NativeString__to_s_with_length(var51, var52);
1319 var50 = var53;
1320 varonce49 = var50;
1321 }
1322 ((void (*)(val*, val*))(var_32->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_32, var50) /* add on <var_32:Array[Object]>*/;
1323 var54 = ((val* (*)(val*))(var_32->class->vft[COLOR_string__Object__to_s]))(var_32) /* to_s on <var_32:Array[Object]>*/;
1324 var = var54;
1325 goto RET_LABEL;
1326 } else {
1327 var = var_name;
1328 goto RET_LABEL;
1329 }
1330 RET_LABEL:;
1331 return var;
1332 }
1333 /* method serialization_phase#AAttrPropdef#type_name for (self: Object): String */
1334 val* VIRTUAL_serialization_phase__AAttrPropdef__type_name(val* self) {
1335 val* var /* : String */;
1336 val* var1 /* : String */;
1337 var1 = serialization_phase__AAttrPropdef__type_name(self);
1338 var = var1;
1339 RET_LABEL:;
1340 return var;
1341 }
1342 /* method serialization_phase#AModule#deserializer_nclassdef for (self: AModule): nullable AStdClassdef */
1343 val* serialization_phase__AModule__deserializer_nclassdef(val* self) {
1344 val* var /* : nullable AStdClassdef */;
1345 val* var1 /* : ANodes[AClassdef] */;
1346 val* var2 /* : Iterator[nullable Object] */;
1347 short int var3 /* : Bool */;
1348 val* var4 /* : nullable Object */;
1349 val* var_nclassdef /* var nclassdef: AClassdef */;
1350 short int var5 /* : Bool */;
1351 short int var6 /* : Bool */;
1352 int cltype;
1353 int idtype;
1354 short int var_ /* var : Bool */;
1355 val* var7 /* : nullable TClassid */;
1356 val* var8 /* : String */;
1357 static val* varonce;
1358 val* var9 /* : String */;
1359 char* var10 /* : NativeString */;
1360 long var11 /* : Int */;
1361 val* var12 /* : String */;
1362 short int var13 /* : Bool */;
1363 val* var14 /* : null */;
1364 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(self) /* n_classdefs on <self:AModule>*/;
1365 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:ANodes[AClassdef]>*/;
1366 for(;;) {
1367 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
1368 if(!var3) break;
1369 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
1370 var_nclassdef = var4;
1371 /* <var_nclassdef:AClassdef> isa AStdClassdef */
1372 cltype = type_parser_nodes__AStdClassdef.color;
1373 idtype = type_parser_nodes__AStdClassdef.id;
1374 if(cltype >= var_nclassdef->type->table_size) {
1375 var6 = 0;
1376 } else {
1377 var6 = var_nclassdef->type->type_table[cltype] == idtype;
1378 }
1379 var_ = var6;
1380 if (var6){
1381 var7 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_id]))(var_nclassdef) /* n_id on <var_nclassdef:AClassdef(AStdClassdef)>*/;
1382 if (var7 == NULL) {
1383 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1384 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 181);
1385 show_backtrace(1);
1386 } else {
1387 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_parser_nodes__Token__text]))(var7) /* text on <var7:nullable TClassid>*/;
1388 }
1389 if (varonce) {
1390 var9 = varonce;
1391 } else {
1392 var10 = "Deserialization";
1393 var11 = 15;
1394 var12 = string__NativeString__to_s_with_length(var10, var11);
1395 var9 = var12;
1396 varonce = var9;
1397 }
1398 var13 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___61d_61d]))(var8, var9) /* == on <var8:String>*/;
1399 var5 = var13;
1400 } else {
1401 var5 = var_;
1402 }
1403 if (var5){
1404 var = var_nclassdef;
1405 goto RET_LABEL;
1406 } else {
1407 }
1408 CONTINUE_label: (void)0;
1409 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
1410 }
1411 BREAK_label: (void)0;
1412 var14 = NULL;
1413 var = var14;
1414 goto RET_LABEL;
1415 RET_LABEL:;
1416 return var;
1417 }
1418 /* method serialization_phase#AModule#deserializer_nclassdef for (self: Object): nullable AStdClassdef */
1419 val* VIRTUAL_serialization_phase__AModule__deserializer_nclassdef(val* self) {
1420 val* var /* : nullable AStdClassdef */;
1421 val* var1 /* : nullable AStdClassdef */;
1422 var1 = serialization_phase__AModule__deserializer_nclassdef(self);
1423 var = var1;
1424 RET_LABEL:;
1425 return var;
1426 }
1427 /* method serialization_phase#AStdClassdef#deserializer_npropdef for (self: AStdClassdef): nullable AMethPropdef */
1428 val* serialization_phase__AStdClassdef__deserializer_npropdef(val* self) {
1429 val* var /* : nullable AMethPropdef */;
1430 val* var1 /* : ANodes[APropdef] */;
1431 val* var2 /* : Iterator[nullable Object] */;
1432 short int var3 /* : Bool */;
1433 val* var4 /* : nullable Object */;
1434 val* var_npropdef /* var npropdef: APropdef */;
1435 short int var5 /* : Bool */;
1436 int cltype;
1437 int idtype;
1438 val* var6 /* : nullable AMethid */;
1439 val* var_id /* var id: nullable AMethid */;
1440 short int var7 /* : Bool */;
1441 short int var8 /* : Bool */;
1442 int cltype9;
1443 int idtype10;
1444 short int var_ /* var : Bool */;
1445 val* var11 /* : TId */;
1446 val* var12 /* : String */;
1447 static val* varonce;
1448 val* var13 /* : String */;
1449 char* var14 /* : NativeString */;
1450 long var15 /* : Int */;
1451 val* var16 /* : String */;
1452 short int var17 /* : Bool */;
1453 val* var18 /* : null */;
1454 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(self) /* n_propdefs on <self:AStdClassdef>*/;
1455 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:ANodes[APropdef]>*/;
1456 for(;;) {
1457 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
1458 if(!var3) break;
1459 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
1460 var_npropdef = var4;
1461 /* <var_npropdef:APropdef> isa AMethPropdef */
1462 cltype = type_parser_nodes__AMethPropdef.color;
1463 idtype = type_parser_nodes__AMethPropdef.id;
1464 if(cltype >= var_npropdef->type->table_size) {
1465 var5 = 0;
1466 } else {
1467 var5 = var_npropdef->type->type_table[cltype] == idtype;
1468 }
1469 if (var5){
1470 var6 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_parser_nodes__AMethPropdef__n_methid]))(var_npropdef) /* n_methid on <var_npropdef:APropdef(AMethPropdef)>*/;
1471 var_id = var6;
1472 /* <var_id:nullable AMethid> isa AIdMethid */
1473 cltype9 = type_parser_nodes__AIdMethid.color;
1474 idtype10 = type_parser_nodes__AIdMethid.id;
1475 if(var_id == NULL) {
1476 var8 = 0;
1477 } else {
1478 if(cltype9 >= var_id->type->table_size) {
1479 var8 = 0;
1480 } else {
1481 var8 = var_id->type->type_table[cltype9] == idtype10;
1482 }
1483 }
1484 var_ = var8;
1485 if (var8){
1486 var11 = ((val* (*)(val*))(var_id->class->vft[COLOR_parser_nodes__AIdMethid__n_id]))(var_id) /* n_id on <var_id:nullable AMethid(AIdMethid)>*/;
1487 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_parser_nodes__Token__text]))(var11) /* text on <var11:TId>*/;
1488 if (varonce) {
1489 var13 = varonce;
1490 } else {
1491 var14 = "deserialize_class";
1492 var15 = 17;
1493 var16 = string__NativeString__to_s_with_length(var14, var15);
1494 var13 = var16;
1495 varonce = var13;
1496 }
1497 var17 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var13) /* == on <var12:String>*/;
1498 var7 = var17;
1499 } else {
1500 var7 = var_;
1501 }
1502 if (var7){
1503 var = var_npropdef;
1504 goto RET_LABEL;
1505 } else {
1506 }
1507 } else {
1508 }
1509 CONTINUE_label: (void)0;
1510 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
1511 }
1512 BREAK_label: (void)0;
1513 var18 = NULL;
1514 var = var18;
1515 goto RET_LABEL;
1516 RET_LABEL:;
1517 return var;
1518 }
1519 /* method serialization_phase#AStdClassdef#deserializer_npropdef for (self: Object): nullable AMethPropdef */
1520 val* VIRTUAL_serialization_phase__AStdClassdef__deserializer_npropdef(val* self) {
1521 val* var /* : nullable AMethPropdef */;
1522 val* var1 /* : nullable AMethPropdef */;
1523 var1 = serialization_phase__AStdClassdef__deserializer_npropdef(self);
1524 var = var1;
1525 RET_LABEL:;
1526 return var;
1527 }