nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / nith.sep.1.c
1 #include "nith.sep.0.h"
2 /* method nith#ToolContext#process_options for (self: ToolContext, Sequence[String]) */
3 void nith__ToolContext__process_options(val* self, val* p0) {
4 val* var_args /* var args: Sequence[String] */;
5 val* var /* : OptionBool */;
6 val* var2 /* : OptionBool */;
7 val* var3 /* : nullable Object */;
8 val* var5 /* : nullable Object */;
9 long var6 /* : Int */;
10 short int var7 /* : Bool */;
11 val* var8 /* : OptionBool */;
12 val* var10 /* : OptionBool */;
13 val* var11 /* : nullable Object */;
14 val* var13 /* : nullable Object */;
15 long var14 /* : Int */;
16 short int var15 /* : Bool */;
17 long var16 /* : Int */;
18 short int var18 /* : Bool */;
19 int cltype;
20 int idtype;
21 const char* var_class_name;
22 long var19 /* : Int */;
23 long var_sum /* var sum: Int */;
24 long var20 /* : Int */;
25 short int var21 /* : Bool */;
26 short int var23 /* : Bool */;
27 int cltype24;
28 int idtype25;
29 const char* var_class_name26;
30 short int var27 /* : Bool */;
31 static val* varonce;
32 val* var28 /* : String */;
33 char* var29 /* : NativeString */;
34 long var30 /* : Int */;
35 val* var31 /* : FlatString */;
36 long var32 /* : Int */;
37 long var34 /* : Int */;
38 short int var35 /* : Bool */;
39 short int var36 /* : Bool */;
40 short int var38 /* : Bool */;
41 val* var39 /* : OptionBool */;
42 val* var41 /* : OptionBool */;
43 short int var42 /* : Bool */;
44 short int var44 /* : Bool */;
45 int cltype45;
46 int idtype46;
47 const struct type* type_struct;
48 const char* var_class_name47;
49 val* var48 /* : nullable Object */;
50 var_args = p0;
51 {
52 ((void (*)(val*, val*))(self->class->vft[COLOR_nith__ToolContext__process_options]))(self, p0) /* process_options on <self:ToolContext>*/;
53 }
54 {
55 { /* Inline separate_compiler#ToolContext#opt_separate (self) on <self:ToolContext> */
56 var2 = self->attrs[COLOR_separate_compiler__ToolContext___opt_separate].val; /* _opt_separate on <self:ToolContext> */
57 if (unlikely(var2 == NULL)) {
58 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_separate");
59 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 24);
60 show_backtrace(1);
61 }
62 var = var2;
63 RET_LABEL1:(void)0;
64 }
65 }
66 {
67 { /* Inline opts#Option#value (var) on <var:OptionBool> */
68 var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionBool> */
69 var3 = var5;
70 RET_LABEL4:(void)0;
71 }
72 }
73 {
74 var7 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
75 var6 = kernel__Bool__to_i(var7);
76 }
77 {
78 { /* Inline separate_erasure_compiler#ToolContext#opt_erasure (self) on <self:ToolContext> */
79 var10 = self->attrs[COLOR_separate_erasure_compiler__ToolContext___opt_erasure].val; /* _opt_erasure on <self:ToolContext> */
80 if (unlikely(var10 == NULL)) {
81 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
82 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 22);
83 show_backtrace(1);
84 }
85 var8 = var10;
86 RET_LABEL9:(void)0;
87 }
88 }
89 {
90 { /* Inline opts#Option#value (var8) on <var8:OptionBool> */
91 var13 = var8->attrs[COLOR_opts__Option___value].val; /* _value on <var8:OptionBool> */
92 var11 = var13;
93 RET_LABEL12:(void)0;
94 }
95 }
96 {
97 var15 = ((struct instance_kernel__Bool*)var11)->value; /* autounbox from nullable Object to Bool */;
98 var14 = kernel__Bool__to_i(var15);
99 }
100 {
101 { /* Inline kernel#Int#+ (var6,var14) on <var6:Int> */
102 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
103 /* <var14:Int> isa OTHER */
104 var18 = 1; /* easy <var14:Int> isa OTHER*/
105 if (unlikely(!var18)) {
106 var_class_name = type_kernel__Int.name;
107 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
108 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
109 show_backtrace(1);
110 }
111 var19 = var6 + var14;
112 var16 = var19;
113 goto RET_LABEL17;
114 RET_LABEL17:(void)0;
115 }
116 }
117 var_sum = var16;
118 var20 = 1;
119 {
120 { /* Inline kernel#Int#> (var_sum,var20) on <var_sum:Int> */
121 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
122 /* <var20:Int> isa OTHER */
123 var23 = 1; /* easy <var20:Int> isa OTHER*/
124 if (unlikely(!var23)) {
125 var_class_name26 = type_kernel__Int.name;
126 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
127 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
128 show_backtrace(1);
129 }
130 var27 = var_sum > var20;
131 var21 = var27;
132 goto RET_LABEL22;
133 RET_LABEL22:(void)0;
134 }
135 }
136 if (var21){
137 if (varonce) {
138 var28 = varonce;
139 } else {
140 var29 = "Options --separate and --erasure are exclusive";
141 var30 = 46;
142 var31 = string__NativeString__to_s_with_length(var29, var30);
143 var28 = var31;
144 varonce = var28;
145 }
146 {
147 file__Object__print(self, var28); /* Direct call file#Object#print on <self:ToolContext>*/
148 }
149 var32 = 1;
150 {
151 { /* Inline kernel#Object#exit (self,var32) on <self:ToolContext> */
152 exit(var32);
153 RET_LABEL33:(void)0;
154 }
155 }
156 } else {
157 var34 = 0;
158 {
159 { /* Inline kernel#Int#== (var_sum,var34) on <var_sum:Int> */
160 var38 = var_sum == var34;
161 var36 = var38;
162 goto RET_LABEL37;
163 RET_LABEL37:(void)0;
164 }
165 var35 = var36;
166 }
167 if (var35){
168 {
169 { /* Inline separate_compiler#ToolContext#opt_separate (self) on <self:ToolContext> */
170 var41 = self->attrs[COLOR_separate_compiler__ToolContext___opt_separate].val; /* _opt_separate on <self:ToolContext> */
171 if (unlikely(var41 == NULL)) {
172 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_separate");
173 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 24);
174 show_backtrace(1);
175 }
176 var39 = var41;
177 RET_LABEL40:(void)0;
178 }
179 }
180 var42 = 1;
181 {
182 { /* Inline opts#Option#value= (var39,var42) on <var39:OptionBool> */
183 /* Covariant cast for argument 0 (value) <var42:Bool> isa VALUE */
184 /* <var42:Bool> isa VALUE */
185 type_struct = var39->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
186 cltype45 = type_struct->color;
187 idtype46 = type_struct->id;
188 if(cltype45 >= (&type_kernel__Bool)->table_size) {
189 var44 = 0;
190 } else {
191 var44 = (&type_kernel__Bool)->type_table[cltype45] == idtype46;
192 }
193 if (unlikely(!var44)) {
194 var_class_name47 = type_kernel__Bool.name;
195 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name47);
196 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
197 show_backtrace(1);
198 }
199 var48 = BOX_kernel__Bool(var42); /* autobox from Bool to nullable Object */
200 var39->attrs[COLOR_opts__Option___value].val = var48; /* _value on <var39:OptionBool> */
201 RET_LABEL43:(void)0;
202 }
203 }
204 } else {
205 }
206 }
207 RET_LABEL:;
208 }
209 /* method nith#ToolContext#process_options for (self: Object, Sequence[String]) */
210 void VIRTUAL_nith__ToolContext__process_options(val* self, val* p0) {
211 nith__ToolContext__process_options(self, p0); /* Direct call nith#ToolContext#process_options on <self:Object(ToolContext)>*/
212 RET_LABEL:;
213 }