c_src: update with CString
[nit.git] / c_src / nitc__modelbuilder.sep.1.c
1 #include "nitc__modelbuilder.sep.0.h"
2 /* method modelbuilder#ToolContext#opt_ignore_visibility for (self: ToolContext): OptionBool */
3 val* nitc__modelbuilder___ToolContext___opt_ignore_visibility(val* self) {
4 val* var /* : OptionBool */;
5 val* var1 /* : OptionBool */;
6 var1 = self->attrs[COLOR_nitc__modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder, 27);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method modelbuilder#ToolContext#init for (self: ToolContext) */
17 void nitc__modelbuilder___ToolContext___core__kernel__Object__init(val* self) {
18 val* var /* : OptionContext */;
19 val* var2 /* : OptionContext */;
20 val* var3 /* : OptionBool */;
21 val* var5 /* : OptionBool */;
22 val* var6 /* : Array[Option] */;
23 val* var7 /* : NativeArray[Option] */;
24 {
25 ((void(*)(val* self))(self->class->vft[COLOR_nitc__modelbuilder___ToolContext___core__kernel__Object__init]))(self); /* init on <self:ToolContext>*/
26 }
27 {
28 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
29 var2 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
30 if (unlikely(var2 == NULL)) {
31 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
32 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
33 fatal_exit(1);
34 }
35 var = var2;
36 RET_LABEL1:(void)0;
37 }
38 }
39 {
40 { /* Inline modelbuilder#ToolContext#opt_ignore_visibility (self) on <self:ToolContext> */
41 var5 = self->attrs[COLOR_nitc__modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on <self:ToolContext> */
42 if (unlikely(var5 == NULL)) {
43 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility");
44 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder, 27);
45 fatal_exit(1);
46 }
47 var3 = var5;
48 RET_LABEL4:(void)0;
49 }
50 }
51 var6 = NEW_core__Array(&type_core__Array__opts__Option);
52 { /* var6 = array_instance Array[Option] */
53 var7 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
54 ((struct instance_core__NativeArray*)var7)->values[0] = (val*) var3;
55 {
56 ((void(*)(val* self, val* p0, long p1))(var6->class->vft[COLOR_core__array__Array__with_native]))(var6, var7, 1l); /* with_native on <var6:Array[Option]>*/
57 }
58 }
59 {
60 opts___opts__OptionContext___add_option(var, var6); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
61 }
62 RET_LABEL:;
63 }
64 /* method modelbuilder#ToolContext#make_main_module for (self: ToolContext, Array[MModule]): MModule */
65 val* nitc__modelbuilder___ToolContext___make_main_module(val* self, val* p0) {
66 val* var /* : MModule */;
67 val* var_mmodules /* var mmodules: Array[MModule] */;
68 short int var1 /* : Bool */;
69 short int var2 /* : Bool */;
70 long var3 /* : Int */;
71 long var5 /* : Int */;
72 short int var6 /* : Bool */;
73 short int var8 /* : Bool */;
74 val* var9 /* : nullable Object */;
75 val* var_mainmodule /* var mainmodule: nullable Object */;
76 val* var10 /* : MModule */;
77 val* var11 /* : ModelBuilder */;
78 val* var12 /* : Model */;
79 val* var14 /* : Model */;
80 val* var15 /* : nullable Object */;
81 val* var16 /* : String */;
82 val* var18 /* : String */;
83 static val* varonce;
84 val* var19 /* : String */;
85 char* var20 /* : NativeString */;
86 val* var21 /* : String */;
87 val* var22 /* : String */;
88 val* var23 /* : Location */;
89 val* var24 /* : nullable Object */;
90 val* var25 /* : Location */;
91 val* var27 /* : Location */;
92 val* var28 /* : nullable SourceFile */;
93 val* var30 /* : nullable SourceFile */;
94 val* var32 /* : ModelBuilder */;
95 val* var33 /* : ModelBuilder */;
96 var_mmodules = p0;
97 {
98 var1 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_mmodules);
99 }
100 var2 = !var1;
101 if (unlikely(!var2)) {
102 PRINT_ERROR("Runtime error: %s", "Assert failed");
103 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder, 39);
104 fatal_exit(1);
105 }
106 {
107 { /* Inline array#AbstractArrayRead#length (var_mmodules) on <var_mmodules:Array[MModule]> */
108 var5 = var_mmodules->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_mmodules:Array[MModule]> */
109 var3 = var5;
110 RET_LABEL4:(void)0;
111 }
112 }
113 {
114 { /* Inline kernel#Int#== (var3,1l) on <var3:Int> */
115 var8 = var3 == 1l;
116 var6 = var8;
117 goto RET_LABEL7;
118 RET_LABEL7:(void)0;
119 }
120 }
121 if (var6){
122 {
123 var9 = core___core__SequenceRead___Collection__first(var_mmodules);
124 }
125 var_mainmodule = var9;
126 } else {
127 var10 = NEW_nitc__MModule(&type_nitc__MModule);
128 {
129 var11 = nitc__modelbuilder_base___ToolContext___modelbuilder(self);
130 }
131 {
132 { /* Inline modelbuilder_base#ModelBuilder#model (var11) on <var11:ModelBuilder> */
133 var14 = var11->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <var11:ModelBuilder> */
134 if (unlikely(var14 == NULL)) {
135 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
136 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
137 fatal_exit(1);
138 }
139 var12 = var14;
140 RET_LABEL13:(void)0;
141 }
142 }
143 {
144 var15 = core___core__SequenceRead___Collection__first(var_mmodules);
145 }
146 {
147 { /* Inline mmodule#MModule#name (var15) on <var15:nullable Object(MModule)> */
148 var18 = var15->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var15:nullable Object(MModule)> */
149 if (unlikely(var18 == NULL)) {
150 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
151 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 95);
152 fatal_exit(1);
153 }
154 var16 = var18;
155 RET_LABEL17:(void)0;
156 }
157 }
158 if (likely(varonce!=NULL)) {
159 var19 = varonce;
160 } else {
161 var20 = "-m";
162 var21 = core__flat___NativeString___to_s_full(var20, 2l, 2l);
163 var19 = var21;
164 varonce = var19;
165 }
166 {
167 var22 = ((val*(*)(val* self, val* p0))(var16->class->vft[COLOR_core__abstract_text__String___43d]))(var16, var19); /* + on <var16:String>*/
168 }
169 var23 = NEW_nitc__Location(&type_nitc__Location);
170 {
171 var24 = core___core__SequenceRead___Collection__first(var_mmodules);
172 }
173 {
174 { /* Inline mmodule#MModule#location (var24) on <var24:nullable Object(MModule)> */
175 var27 = var24->attrs[COLOR_nitc__mmodule__MModule___location].val; /* _location on <var24:nullable Object(MModule)> */
176 if (unlikely(var27 == NULL)) {
177 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
178 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 98);
179 fatal_exit(1);
180 }
181 var25 = var27;
182 RET_LABEL26:(void)0;
183 }
184 }
185 {
186 { /* Inline location#Location#file (var25) on <var25:Location> */
187 var30 = var25->attrs[COLOR_nitc__location__Location___file].val; /* _file on <var25:Location> */
188 var28 = var30;
189 RET_LABEL29:(void)0;
190 }
191 }
192 {
193 ((void(*)(val* self, val* p0))(var23->class->vft[COLOR_nitc__location__Location__file_61d]))(var23, var28); /* file= on <var23:Location>*/
194 }
195 {
196 ((void(*)(val* self, long p0))(var23->class->vft[COLOR_nitc__location__Location__line_start_61d]))(var23, 0l); /* line_start= on <var23:Location>*/
197 }
198 {
199 ((void(*)(val* self, long p0))(var23->class->vft[COLOR_nitc__location__Location__line_end_61d]))(var23, 0l); /* line_end= on <var23:Location>*/
200 }
201 {
202 ((void(*)(val* self, long p0))(var23->class->vft[COLOR_nitc__location__Location__column_start_61d]))(var23, 0l); /* column_start= on <var23:Location>*/
203 }
204 {
205 ((void(*)(val* self, long p0))(var23->class->vft[COLOR_nitc__location__Location__column_end_61d]))(var23, 0l); /* column_end= on <var23:Location>*/
206 }
207 {
208 ((void(*)(val* self))(var23->class->vft[COLOR_core__kernel__Object__init]))(var23); /* init on <var23:Location>*/
209 }
210 {
211 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__mmodule__MModule__model_61d]))(var10, var12); /* model= on <var10:MModule>*/
212 }
213 {
214 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__mmodule__MModule__mgroup_61d]))(var10, ((val*)NULL)); /* mgroup= on <var10:MModule>*/
215 }
216 {
217 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__mmodule__MModule__name_61d]))(var10, var22); /* name= on <var10:MModule>*/
218 }
219 {
220 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__mmodule__MModule__location_61d]))(var10, var23); /* location= on <var10:MModule>*/
221 }
222 {
223 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:MModule>*/
224 }
225 var_mainmodule = var10;
226 {
227 { /* Inline model_base#MEntity#is_fictive= (var_mainmodule,1) on <var_mainmodule:nullable Object(MModule)> */
228 var_mainmodule->attrs[COLOR_nitc__model_base__MEntity___is_fictive].s = 1; /* _is_fictive on <var_mainmodule:nullable Object(MModule)> */
229 RET_LABEL31:(void)0;
230 }
231 }
232 {
233 nitc___nitc__MModule___set_imported_mmodules(var_mainmodule, var_mmodules); /* Direct call mmodule#MModule#set_imported_mmodules on <var_mainmodule:nullable Object(MModule)>*/
234 }
235 {
236 var32 = nitc__modelbuilder_base___ToolContext___modelbuilder(self);
237 }
238 {
239 nitc__loader___ModelBuilder___apply_conditional_importations(var32, var_mainmodule); /* Direct call loader#ModelBuilder#apply_conditional_importations on <var32:ModelBuilder>*/
240 }
241 {
242 var33 = nitc__modelbuilder_base___ToolContext___modelbuilder(self);
243 }
244 {
245 nitc__modelbuilder___ModelBuilder___run_phases(var33); /* Direct call modelbuilder#ModelBuilder#run_phases on <var33:ModelBuilder>*/
246 }
247 }
248 var = var_mainmodule;
249 goto RET_LABEL;
250 RET_LABEL:;
251 return var;
252 }
253 /* method modelbuilder#ToolContext#run_global_phases for (self: ToolContext, Array[MModule]) */
254 void nitc__modelbuilder___ToolContext___run_global_phases(val* self, val* p0) {
255 val* var_mmodules /* var mmodules: Array[MModule] */;
256 short int var /* : Bool */;
257 short int var1 /* : Bool */;
258 val* var2 /* : MModule */;
259 val* var_mainmodule /* var mainmodule: MModule */;
260 val* var3 /* : Sequence[Phase] */;
261 val* var_ /* var : Sequence[Phase] */;
262 val* var4 /* : Iterator[nullable Object] */;
263 val* var_5 /* var : IndexedIterator[Phase] */;
264 short int var6 /* : Bool */;
265 val* var7 /* : nullable Object */;
266 val* var_phase /* var phase: Phase */;
267 short int var8 /* : Bool */;
268 short int var10 /* : Bool */;
269 short int var12 /* : Bool */;
270 var_mmodules = p0;
271 {
272 var = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_mmodules);
273 }
274 var1 = !var;
275 if (var1){
276 {
277 var2 = nitc__mixin___ToolContext___make_main_module(self, var_mmodules);
278 }
279 var_mainmodule = var2;
280 {
281 var3 = nitc__phase___ToolContext___phases_list(self);
282 }
283 var_ = var3;
284 {
285 var4 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Sequence[Phase]>*/
286 }
287 var_5 = var4;
288 for(;;) {
289 {
290 var6 = ((short int(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_5); /* is_ok on <var_5:IndexedIterator[Phase]>*/
291 }
292 if (var6){
293 } else {
294 goto BREAK_label;
295 }
296 {
297 var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_5); /* item on <var_5:IndexedIterator[Phase]>*/
298 }
299 var_phase = var7;
300 {
301 { /* Inline phase#Phase#disabled (var_phase) on <var_phase:Phase> */
302 var10 = var_phase->attrs[COLOR_nitc__phase__Phase___disabled].s; /* _disabled on <var_phase:Phase> */
303 var8 = var10;
304 RET_LABEL9:(void)0;
305 }
306 }
307 if (var8){
308 goto BREAK_label11;
309 } else {
310 }
311 {
312 ((void(*)(val* self, val* p0, val* p1))(var_phase->class->vft[COLOR_nitc__modelbuilder__Phase__process_mainmodule]))(var_phase, var_mainmodule, var_mmodules); /* process_mainmodule on <var_phase:Phase>*/
313 }
314 BREAK_label11: (void)0;
315 {
316 ((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_5); /* next on <var_5:IndexedIterator[Phase]>*/
317 }
318 }
319 BREAK_label: (void)0;
320 {
321 ((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_5); /* finish on <var_5:IndexedIterator[Phase]>*/
322 }
323 } else {
324 }
325 {
326 var12 = nitc___nitc__ToolContext___check_errors(self);
327 }
328 {
329 nitc___nitc__ToolContext___errors_info(self); /* Direct call toolcontext#ToolContext#errors_info on <self:ToolContext>*/
330 }
331 RET_LABEL:;
332 }
333 /* method modelbuilder#Phase#process_mainmodule for (self: Phase, MModule, SequenceRead[MModule]) */
334 void nitc__modelbuilder___Phase___process_mainmodule(val* self, val* p0, val* p1) {
335 val* var_mainmodule /* var mainmodule: MModule */;
336 val* var_given_mmodules /* var given_mmodules: SequenceRead[MModule] */;
337 var_mainmodule = p0;
338 var_given_mmodules = p1;
339 RET_LABEL:;
340 }
341 /* method modelbuilder#ModelBuilder#run_phases for (self: ModelBuilder) */
342 void nitc__modelbuilder___ModelBuilder___run_phases(val* self) {
343 val* var /* : Array[MModule] */;
344 val* var2 /* : Array[MModule] */;
345 val* var3 /* : Array[nullable Object] */;
346 val* var_mmodules /* var mmodules: Array[MModule] */;
347 val* var4 /* : Model */;
348 val* var6 /* : Model */;
349 val* var7 /* : POSet[MModule] */;
350 val* var9 /* : POSet[MModule] */;
351 val* var10 /* : Array[AModule] */;
352 val* var_nmodules /* var nmodules: Array[AModule] */;
353 val* var_ /* var : Array[MModule] */;
354 val* var11 /* : IndexedIterator[nullable Object] */;
355 val* var_12 /* var : IndexedIterator[MModule] */;
356 short int var13 /* : Bool */;
357 val* var14 /* : nullable Object */;
358 val* var_mm /* var mm: MModule */;
359 short int var15 /* : Bool */;
360 short int var17 /* : Bool */;
361 val* var19 /* : nullable AModule */;
362 val* var20 /* : ToolContext */;
363 val* var22 /* : ToolContext */;
364 val* var23 /* : ToolContext */;
365 val* var25 /* : ToolContext */;
366 val* var26 /* : OptionBool */;
367 val* var28 /* : OptionBool */;
368 val* var29 /* : nullable Object */;
369 val* var31 /* : nullable Object */;
370 short int var32 /* : Bool */;
371 val* var33 /* : ToolContext */;
372 val* var35 /* : ToolContext */;
373 static val* varonce;
374 val* var36 /* : String */;
375 char* var37 /* : NativeString */;
376 val* var38 /* : String */;
377 val* var39 /* : ToolContext */;
378 val* var41 /* : ToolContext */;
379 {
380 { /* Inline loader#ModelBuilder#parsed_modules (self) on <self:ModelBuilder> */
381 var2 = self->attrs[COLOR_nitc__loader__ModelBuilder___parsed_modules].val; /* _parsed_modules on <self:ModelBuilder> */
382 if (unlikely(var2 == NULL)) {
383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parsed_modules");
384 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 320);
385 fatal_exit(1);
386 }
387 var = var2;
388 RET_LABEL1:(void)0;
389 }
390 }
391 {
392 var3 = core__array___Collection___to_a(var);
393 }
394 var_mmodules = var3;
395 {
396 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
397 var6 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
398 if (unlikely(var6 == NULL)) {
399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
400 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
401 fatal_exit(1);
402 }
403 var4 = var6;
404 RET_LABEL5:(void)0;
405 }
406 }
407 {
408 { /* Inline mmodule#Model#mmodule_importation_hierarchy (var4) on <var4:Model> */
409 var9 = var4->attrs[COLOR_nitc__mmodule__Model___mmodule_importation_hierarchy].val; /* _mmodule_importation_hierarchy on <var4:Model> */
410 if (unlikely(var9 == NULL)) {
411 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_importation_hierarchy");
412 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 34);
413 fatal_exit(1);
414 }
415 var7 = var9;
416 RET_LABEL8:(void)0;
417 }
418 }
419 {
420 core___core__Comparator___sort(var7, var_mmodules); /* Direct call sorter#Comparator#sort on <var7:POSet[MModule]>*/
421 }
422 var10 = NEW_core__Array(&type_core__Array__nitc__AModule);
423 {
424 core___core__Array___core__kernel__Object__init(var10); /* Direct call array#Array#init on <var10:Array[AModule]>*/
425 }
426 var_nmodules = var10;
427 var_ = var_mmodules;
428 {
429 var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
430 }
431 var_12 = var11;
432 for(;;) {
433 {
434 var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:IndexedIterator[MModule]>*/
435 }
436 if (var13){
437 } else {
438 goto BREAK_label;
439 }
440 {
441 var14 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:IndexedIterator[MModule]>*/
442 }
443 var_mm = var14;
444 {
445 { /* Inline model_base#MEntity#is_fictive (var_mm) on <var_mm:MModule> */
446 var17 = var_mm->attrs[COLOR_nitc__model_base__MEntity___is_fictive].s; /* _is_fictive on <var_mm:MModule> */
447 var15 = var17;
448 RET_LABEL16:(void)0;
449 }
450 }
451 if (var15){
452 goto BREAK_label18;
453 } else {
454 }
455 {
456 var19 = nitc__loader___ModelBuilder___mmodule2node(self, var_mm);
457 }
458 if (unlikely(var19 == NULL)) {
459 PRINT_ERROR("Runtime error: %s", "Cast failed");
460 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder, 97);
461 fatal_exit(1);
462 }
463 {
464 core___core__Array___core__abstract_collection__SimpleCollection__add(var_nmodules, var19); /* Direct call array#Array#add on <var_nmodules:Array[AModule]>*/
465 }
466 BREAK_label18: (void)0;
467 {
468 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:IndexedIterator[MModule]>*/
469 }
470 }
471 BREAK_label: (void)0;
472 {
473 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:IndexedIterator[MModule]>*/
474 }
475 {
476 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
477 var22 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
478 if (unlikely(var22 == NULL)) {
479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
480 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
481 fatal_exit(1);
482 }
483 var20 = var22;
484 RET_LABEL21:(void)0;
485 }
486 }
487 {
488 nitc__phase___ToolContext___run_phases(var20, var_nmodules); /* Direct call phase#ToolContext#run_phases on <var20:ToolContext>*/
489 }
490 {
491 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
492 var25 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
493 if (unlikely(var25 == NULL)) {
494 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
495 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
496 fatal_exit(1);
497 }
498 var23 = var25;
499 RET_LABEL24:(void)0;
500 }
501 }
502 {
503 { /* Inline loader#ToolContext#opt_only_metamodel (var23) on <var23:ToolContext> */
504 var28 = var23->attrs[COLOR_nitc__loader__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on <var23:ToolContext> */
505 if (unlikely(var28 == NULL)) {
506 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel");
507 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 47);
508 fatal_exit(1);
509 }
510 var26 = var28;
511 RET_LABEL27:(void)0;
512 }
513 }
514 {
515 { /* Inline opts#Option#value (var26) on <var26:OptionBool> */
516 var31 = var26->attrs[COLOR_opts__Option___value].val; /* _value on <var26:OptionBool> */
517 var29 = var31;
518 RET_LABEL30:(void)0;
519 }
520 }
521 var32 = (short int)((long)(var29)>>2);
522 if (var32){
523 {
524 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
525 var35 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
526 if (unlikely(var35 == NULL)) {
527 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
528 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
529 fatal_exit(1);
530 }
531 var33 = var35;
532 RET_LABEL34:(void)0;
533 }
534 }
535 if (likely(varonce!=NULL)) {
536 var36 = varonce;
537 } else {
538 var37 = "*** ONLY METAMODEL";
539 var38 = core__flat___NativeString___to_s_full(var37, 18l, 18l);
540 var36 = var38;
541 varonce = var36;
542 }
543 {
544 nitc___nitc__ToolContext___info(var33, var36, 1l); /* Direct call toolcontext#ToolContext#info on <var33:ToolContext>*/
545 }
546 {
547 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
548 var41 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
549 if (unlikely(var41 == NULL)) {
550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
551 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
552 fatal_exit(1);
553 }
554 var39 = var41;
555 RET_LABEL40:(void)0;
556 }
557 }
558 {
559 nitc___nitc__ToolContext___quit(var39); /* Direct call toolcontext#ToolContext#quit on <var39:ToolContext>*/
560 }
561 } else {
562 }
563 RET_LABEL:;
564 }