nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / string_search.sep.1.c
1 #include "string_search.sep.0.h"
2 /* method string_search#Pattern#split_in for (self: Pattern, Text): Array[Match] */
3 val* string_search__Pattern__split_in(val* self, val* p0) {
4 val* var /* : Array[Match] */;
5 val* var_s /* var s: Text */;
6 val* var1 /* : Array[Match] */;
7 val* var_res /* var res: Array[Match] */;
8 long var2 /* : Int */;
9 long var_i /* var i: Int */;
10 long var3 /* : Int */;
11 val* var4 /* : nullable Match */;
12 val* var_match /* var match: nullable Match */;
13 val* var5 /* : null */;
14 short int var6 /* : Bool */;
15 short int var7 /* : Bool */;
16 val* var_other /* var other: nullable Object */;
17 short int var9 /* : Bool */;
18 short int var10 /* : Bool */;
19 short int var11 /* : Bool */;
20 long var12 /* : Int */;
21 long var14 /* : Int */;
22 long var15 /* : Int */;
23 short int var17 /* : Bool */;
24 int cltype;
25 int idtype;
26 const char* var_class_name;
27 long var18 /* : Int */;
28 long var_len /* var len: Int */;
29 val* var19 /* : Match */;
30 val* var20 /* : String */;
31 long var21 /* : Int */;
32 val* var22 /* : nullable Match */;
33 val* var23 /* : Match */;
34 val* var24 /* : String */;
35 long var25 /* : Int */;
36 long var27 /* : Int */;
37 long var28 /* : Int */;
38 short int var30 /* : Bool */;
39 int cltype31;
40 int idtype32;
41 const char* var_class_name33;
42 long var34 /* : Int */;
43 var_s = p0;
44 var1 = NEW_array__Array(&type_array__Arraystring_search__Match);
45 {
46 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:Array[Match]>*/;
47 }
48 var_res = var1;
49 var2 = 0;
50 var_i = var2;
51 var3 = 0;
52 {
53 var4 = ((val* (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_in]))(self, var_s, var3) /* search_in on <self:Pattern>*/;
54 }
55 var_match = var4;
56 for(;;) {
57 var5 = NULL;
58 if (var_match == NULL) {
59 var6 = 0; /* is null */
60 } else {
61 var6 = 1; /* arg is null and recv is not */
62 }
63 if (0) {
64 { /* Inline kernel#Object#!= (var_match,var5) on <var_match:nullable Match> */
65 var_other = var5;
66 {
67 var10 = ((short int (*)(val*, val*))(var_match->class->vft[COLOR_kernel__Object___61d_61d]))(var_match, var_other) /* == on <var_match:nullable Match(Match)>*/;
68 var9 = var10;
69 }
70 var11 = !var9;
71 var7 = var11;
72 goto RET_LABEL8;
73 RET_LABEL8:(void)0;
74 }
75 var6 = var7;
76 }
77 if (var6){
78 {
79 { /* Inline string_search#Match#from (var_match) on <var_match:nullable Match(Match)> */
80 var14 = var_match->attrs[COLOR_string_search__Match___from].l; /* _from on <var_match:nullable Match(Match)> */
81 var12 = var14;
82 RET_LABEL13:(void)0;
83 }
84 }
85 {
86 { /* Inline kernel#Int#- (var12,var_i) on <var12:Int> */
87 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
88 /* <var_i:Int> isa OTHER */
89 var17 = 1; /* easy <var_i:Int> isa OTHER*/
90 if (unlikely(!var17)) {
91 var_class_name = type_kernel__Int.name;
92 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
93 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
94 show_backtrace(1);
95 }
96 var18 = var12 - var_i;
97 var15 = var18;
98 goto RET_LABEL16;
99 RET_LABEL16:(void)0;
100 }
101 }
102 var_len = var15;
103 var19 = NEW_string_search__Match(&type_string_search__Match);
104 {
105 var20 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Text>*/;
106 }
107 {
108 string_search__Match__init(var19, var20, var_i, var_len); /* Direct call string_search#Match#init on <var19:Match>*/
109 }
110 {
111 array__Array__add(var_res, var19); /* Direct call array#Array#add on <var_res:Array[Match]>*/
112 }
113 {
114 var21 = string_search__Match__after(var_match);
115 }
116 var_i = var21;
117 {
118 var22 = ((val* (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_in]))(self, var_s, var_i) /* search_in on <self:Pattern>*/;
119 }
120 var_match = var22;
121 } else {
122 goto BREAK_label;
123 }
124 }
125 BREAK_label: (void)0;
126 var23 = NEW_string_search__Match(&type_string_search__Match);
127 {
128 var24 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Text>*/;
129 }
130 {
131 { /* Inline string#FlatText#length (var_s) on <var_s:Text> */
132 var27 = var_s->attrs[COLOR_string__FlatText___length].l; /* _length on <var_s:Text> */
133 var25 = var27;
134 RET_LABEL26:(void)0;
135 }
136 }
137 {
138 { /* Inline kernel#Int#- (var25,var_i) on <var25:Int> */
139 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
140 /* <var_i:Int> isa OTHER */
141 var30 = 1; /* easy <var_i:Int> isa OTHER*/
142 if (unlikely(!var30)) {
143 var_class_name33 = type_kernel__Int.name;
144 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
145 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
146 show_backtrace(1);
147 }
148 var34 = var25 - var_i;
149 var28 = var34;
150 goto RET_LABEL29;
151 RET_LABEL29:(void)0;
152 }
153 }
154 {
155 string_search__Match__init(var23, var24, var_i, var28); /* Direct call string_search#Match#init on <var23:Match>*/
156 }
157 {
158 array__Array__add(var_res, var23); /* Direct call array#Array#add on <var_res:Array[Match]>*/
159 }
160 var = var_res;
161 goto RET_LABEL;
162 RET_LABEL:;
163 return var;
164 }
165 /* method string_search#Pattern#split_in for (self: Object, Text): Array[Match] */
166 val* VIRTUAL_string_search__Pattern__split_in(val* self, val* p0) {
167 val* var /* : Array[Match] */;
168 val* var1 /* : Array[Match] */;
169 var1 = string_search__Pattern__split_in(self, p0);
170 var = var1;
171 RET_LABEL:;
172 return var;
173 }
174 /* method string_search#Match#string for (self: Match): String */
175 val* string_search__Match__string(val* self) {
176 val* var /* : String */;
177 val* var1 /* : String */;
178 var1 = self->attrs[COLOR_string_search__Match___string].val; /* _string on <self:Match> */
179 if (unlikely(var1 == NULL)) {
180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _string");
181 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 242);
182 show_backtrace(1);
183 }
184 var = var1;
185 RET_LABEL:;
186 return var;
187 }
188 /* method string_search#Match#string for (self: Object): String */
189 val* VIRTUAL_string_search__Match__string(val* self) {
190 val* var /* : String */;
191 val* var1 /* : String */;
192 val* var3 /* : String */;
193 { /* Inline string_search#Match#string (self) on <self:Object(Match)> */
194 var3 = self->attrs[COLOR_string_search__Match___string].val; /* _string on <self:Object(Match)> */
195 if (unlikely(var3 == NULL)) {
196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _string");
197 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 242);
198 show_backtrace(1);
199 }
200 var1 = var3;
201 RET_LABEL2:(void)0;
202 }
203 var = var1;
204 RET_LABEL:;
205 return var;
206 }
207 /* method string_search#Match#string= for (self: Match, String) */
208 void string_search__Match__string_61d(val* self, val* p0) {
209 self->attrs[COLOR_string_search__Match___string].val = p0; /* _string on <self:Match> */
210 RET_LABEL:;
211 }
212 /* method string_search#Match#string= for (self: Object, String) */
213 void VIRTUAL_string_search__Match__string_61d(val* self, val* p0) {
214 { /* Inline string_search#Match#string= (self,p0) on <self:Object(Match)> */
215 self->attrs[COLOR_string_search__Match___string].val = p0; /* _string on <self:Object(Match)> */
216 RET_LABEL1:(void)0;
217 }
218 RET_LABEL:;
219 }
220 /* method string_search#Match#from for (self: Match): Int */
221 long string_search__Match__from(val* self) {
222 long var /* : Int */;
223 long var1 /* : Int */;
224 var1 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Match> */
225 var = var1;
226 RET_LABEL:;
227 return var;
228 }
229 /* method string_search#Match#from for (self: Object): Int */
230 long VIRTUAL_string_search__Match__from(val* self) {
231 long var /* : Int */;
232 long var1 /* : Int */;
233 long var3 /* : Int */;
234 { /* Inline string_search#Match#from (self) on <self:Object(Match)> */
235 var3 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Object(Match)> */
236 var1 = var3;
237 RET_LABEL2:(void)0;
238 }
239 var = var1;
240 RET_LABEL:;
241 return var;
242 }
243 /* method string_search#Match#from= for (self: Match, Int) */
244 void string_search__Match__from_61d(val* self, long p0) {
245 self->attrs[COLOR_string_search__Match___from].l = p0; /* _from on <self:Match> */
246 RET_LABEL:;
247 }
248 /* method string_search#Match#from= for (self: Object, Int) */
249 void VIRTUAL_string_search__Match__from_61d(val* self, long p0) {
250 { /* Inline string_search#Match#from= (self,p0) on <self:Object(Match)> */
251 self->attrs[COLOR_string_search__Match___from].l = p0; /* _from on <self:Object(Match)> */
252 RET_LABEL1:(void)0;
253 }
254 RET_LABEL:;
255 }
256 /* method string_search#Match#length for (self: Match): Int */
257 long string_search__Match__length(val* self) {
258 long var /* : Int */;
259 long var1 /* : Int */;
260 var1 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Match> */
261 var = var1;
262 RET_LABEL:;
263 return var;
264 }
265 /* method string_search#Match#length for (self: Object): Int */
266 long VIRTUAL_string_search__Match__length(val* self) {
267 long var /* : Int */;
268 long var1 /* : Int */;
269 long var3 /* : Int */;
270 { /* Inline string_search#Match#length (self) on <self:Object(Match)> */
271 var3 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Object(Match)> */
272 var1 = var3;
273 RET_LABEL2:(void)0;
274 }
275 var = var1;
276 RET_LABEL:;
277 return var;
278 }
279 /* method string_search#Match#length= for (self: Match, Int) */
280 void string_search__Match__length_61d(val* self, long p0) {
281 self->attrs[COLOR_string_search__Match___length].l = p0; /* _length on <self:Match> */
282 RET_LABEL:;
283 }
284 /* method string_search#Match#length= for (self: Object, Int) */
285 void VIRTUAL_string_search__Match__length_61d(val* self, long p0) {
286 { /* Inline string_search#Match#length= (self,p0) on <self:Object(Match)> */
287 self->attrs[COLOR_string_search__Match___length].l = p0; /* _length on <self:Object(Match)> */
288 RET_LABEL1:(void)0;
289 }
290 RET_LABEL:;
291 }
292 /* method string_search#Match#after for (self: Match): Int */
293 long string_search__Match__after(val* self) {
294 long var /* : Int */;
295 long var1 /* : Int */;
296 long var3 /* : Int */;
297 long var4 /* : Int */;
298 long var6 /* : Int */;
299 long var7 /* : Int */;
300 short int var9 /* : Bool */;
301 int cltype;
302 int idtype;
303 const char* var_class_name;
304 long var10 /* : Int */;
305 {
306 { /* Inline string_search#Match#from (self) on <self:Match> */
307 var3 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Match> */
308 var1 = var3;
309 RET_LABEL2:(void)0;
310 }
311 }
312 {
313 { /* Inline string_search#Match#length (self) on <self:Match> */
314 var6 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Match> */
315 var4 = var6;
316 RET_LABEL5:(void)0;
317 }
318 }
319 {
320 { /* Inline kernel#Int#+ (var1,var4) on <var1:Int> */
321 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
322 /* <var4:Int> isa OTHER */
323 var9 = 1; /* easy <var4:Int> isa OTHER*/
324 if (unlikely(!var9)) {
325 var_class_name = type_kernel__Int.name;
326 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
327 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
328 show_backtrace(1);
329 }
330 var10 = var1 + var4;
331 var7 = var10;
332 goto RET_LABEL8;
333 RET_LABEL8:(void)0;
334 }
335 }
336 var = var7;
337 goto RET_LABEL;
338 RET_LABEL:;
339 return var;
340 }
341 /* method string_search#Match#after for (self: Object): Int */
342 long VIRTUAL_string_search__Match__after(val* self) {
343 long var /* : Int */;
344 long var1 /* : Int */;
345 var1 = string_search__Match__after(self);
346 var = var1;
347 RET_LABEL:;
348 return var;
349 }
350 /* method string_search#Match#to_s for (self: Match): String */
351 val* string_search__Match__to_s(val* self) {
352 val* var /* : String */;
353 val* var1 /* : String */;
354 val* var3 /* : String */;
355 long var4 /* : Int */;
356 long var6 /* : Int */;
357 long var7 /* : Int */;
358 long var9 /* : Int */;
359 val* var10 /* : String */;
360 {
361 { /* Inline string_search#Match#string (self) on <self:Match> */
362 var3 = self->attrs[COLOR_string_search__Match___string].val; /* _string on <self:Match> */
363 if (unlikely(var3 == NULL)) {
364 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _string");
365 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 242);
366 show_backtrace(1);
367 }
368 var1 = var3;
369 RET_LABEL2:(void)0;
370 }
371 }
372 {
373 { /* Inline string_search#Match#from (self) on <self:Match> */
374 var6 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Match> */
375 var4 = var6;
376 RET_LABEL5:(void)0;
377 }
378 }
379 {
380 { /* Inline string_search#Match#length (self) on <self:Match> */
381 var9 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Match> */
382 var7 = var9;
383 RET_LABEL8:(void)0;
384 }
385 }
386 {
387 var10 = string__FlatString__substring(var1, var4, var7);
388 }
389 var = var10;
390 goto RET_LABEL;
391 RET_LABEL:;
392 return var;
393 }
394 /* method string_search#Match#to_s for (self: Object): String */
395 val* VIRTUAL_string_search__Match__to_s(val* self) {
396 val* var /* : String */;
397 val* var1 /* : String */;
398 var1 = string_search__Match__to_s(self);
399 var = var1;
400 RET_LABEL:;
401 return var;
402 }
403 /* method string_search#Match#init for (self: Match, String, Int, Int) */
404 void string_search__Match__init(val* self, val* p0, long p1, long p2) {
405 val* var_s /* var s: String */;
406 long var_f /* var f: Int */;
407 long var_len /* var len: Int */;
408 long var /* : Int */;
409 short int var1 /* : Bool */;
410 short int var3 /* : Bool */;
411 int cltype;
412 int idtype;
413 const char* var_class_name;
414 short int var4 /* : Bool */;
415 long var5 /* : Int */;
416 short int var6 /* : Bool */;
417 short int var8 /* : Bool */;
418 int cltype9;
419 int idtype10;
420 const char* var_class_name11;
421 short int var12 /* : Bool */;
422 long var13 /* : Int */;
423 short int var15 /* : Bool */;
424 int cltype16;
425 int idtype17;
426 const char* var_class_name18;
427 long var19 /* : Int */;
428 long var20 /* : Int */;
429 long var22 /* : Int */;
430 short int var23 /* : Bool */;
431 short int var25 /* : Bool */;
432 int cltype26;
433 int idtype27;
434 const char* var_class_name28;
435 short int var29 /* : Bool */;
436 var_s = p0;
437 var_f = p1;
438 var_len = p2;
439 var = 0;
440 {
441 { /* Inline kernel#Int#>= (var_len,var) on <var_len:Int> */
442 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
443 /* <var:Int> isa OTHER */
444 var3 = 1; /* easy <var:Int> isa OTHER*/
445 if (unlikely(!var3)) {
446 var_class_name = type_kernel__Int.name;
447 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
448 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
449 show_backtrace(1);
450 }
451 var4 = var_len >= var;
452 var1 = var4;
453 goto RET_LABEL2;
454 RET_LABEL2:(void)0;
455 }
456 }
457 if (unlikely(!var1)) {
458 PRINT_ERROR("Runtime error: %s", "Assert \'positive_length\' failed");
459 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 261);
460 show_backtrace(1);
461 }
462 var5 = 0;
463 {
464 { /* Inline kernel#Int#>= (var_f,var5) on <var_f:Int> */
465 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
466 /* <var5:Int> isa OTHER */
467 var8 = 1; /* easy <var5:Int> isa OTHER*/
468 if (unlikely(!var8)) {
469 var_class_name11 = type_kernel__Int.name;
470 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
471 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
472 show_backtrace(1);
473 }
474 var12 = var_f >= var5;
475 var6 = var12;
476 goto RET_LABEL7;
477 RET_LABEL7:(void)0;
478 }
479 }
480 if (unlikely(!var6)) {
481 PRINT_ERROR("Runtime error: %s", "Assert \'valid_from\' failed");
482 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 262);
483 show_backtrace(1);
484 }
485 {
486 { /* Inline kernel#Int#+ (var_f,var_len) on <var_f:Int> */
487 /* Covariant cast for argument 0 (i) <var_len:Int> isa OTHER */
488 /* <var_len:Int> isa OTHER */
489 var15 = 1; /* easy <var_len:Int> isa OTHER*/
490 if (unlikely(!var15)) {
491 var_class_name18 = type_kernel__Int.name;
492 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
493 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
494 show_backtrace(1);
495 }
496 var19 = var_f + var_len;
497 var13 = var19;
498 goto RET_LABEL14;
499 RET_LABEL14:(void)0;
500 }
501 }
502 {
503 { /* Inline string#FlatText#length (var_s) on <var_s:String> */
504 var22 = var_s->attrs[COLOR_string__FlatText___length].l; /* _length on <var_s:String> */
505 var20 = var22;
506 RET_LABEL21:(void)0;
507 }
508 }
509 {
510 { /* Inline kernel#Int#<= (var13,var20) on <var13:Int> */
511 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
512 /* <var20:Int> isa OTHER */
513 var25 = 1; /* easy <var20:Int> isa OTHER*/
514 if (unlikely(!var25)) {
515 var_class_name28 = type_kernel__Int.name;
516 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
517 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
518 show_backtrace(1);
519 }
520 var29 = var13 <= var20;
521 var23 = var29;
522 goto RET_LABEL24;
523 RET_LABEL24:(void)0;
524 }
525 }
526 if (unlikely(!var23)) {
527 PRINT_ERROR("Runtime error: %s", "Assert \'valid_after\' failed");
528 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 263);
529 show_backtrace(1);
530 }
531 {
532 { /* Inline string_search#Match#string= (self,var_s) on <self:Match> */
533 self->attrs[COLOR_string_search__Match___string].val = var_s; /* _string on <self:Match> */
534 RET_LABEL30:(void)0;
535 }
536 }
537 {
538 { /* Inline string_search#Match#from= (self,var_f) on <self:Match> */
539 self->attrs[COLOR_string_search__Match___from].l = var_f; /* _from on <self:Match> */
540 RET_LABEL31:(void)0;
541 }
542 }
543 {
544 { /* Inline string_search#Match#length= (self,var_len) on <self:Match> */
545 self->attrs[COLOR_string_search__Match___length].l = var_len; /* _length on <self:Match> */
546 RET_LABEL32:(void)0;
547 }
548 }
549 RET_LABEL:;
550 }
551 /* method string_search#Match#init for (self: Object, String, Int, Int) */
552 void VIRTUAL_string_search__Match__init(val* self, val* p0, long p1, long p2) {
553 string_search__Match__init(self, p0, p1, p2); /* Direct call string_search#Match#init on <self:Object(Match)>*/
554 RET_LABEL:;
555 }
556 /* method string_search#Char#search_index_in for (self: Char, Text, Int): Int */
557 long string_search__Char__search_index_in(char self, val* p0, long p1) {
558 long var /* : Int */;
559 val* var_s /* var s: Text */;
560 long var_from /* var from: Int */;
561 long var1 /* : Int */;
562 long var3 /* : Int */;
563 long var_stop /* var stop: Int */;
564 short int var4 /* : Bool */;
565 short int var6 /* : Bool */;
566 int cltype;
567 int idtype;
568 const char* var_class_name;
569 short int var7 /* : Bool */;
570 val* var8 /* : SequenceRead[Char] */;
571 val* var9 /* : nullable Object */;
572 short int var10 /* : Bool */;
573 short int var11 /* : Bool */;
574 short int var13 /* : Bool */;
575 char var14 /* : Char */;
576 long var15 /* : Int */;
577 long var16 /* : Int */;
578 short int var18 /* : Bool */;
579 int cltype19;
580 int idtype20;
581 const char* var_class_name21;
582 long var22 /* : Int */;
583 long var23 /* : Int */;
584 long var24 /* : Int */;
585 long var26 /* : Int */;
586 var_s = p0;
587 var_from = p1;
588 {
589 { /* Inline string#FlatText#length (var_s) on <var_s:Text> */
590 var3 = var_s->attrs[COLOR_string__FlatText___length].l; /* _length on <var_s:Text> */
591 var1 = var3;
592 RET_LABEL2:(void)0;
593 }
594 }
595 var_stop = var1;
596 for(;;) {
597 {
598 { /* Inline kernel#Int#< (var_from,var_stop) on <var_from:Int> */
599 /* Covariant cast for argument 0 (i) <var_stop:Int> isa OTHER */
600 /* <var_stop:Int> isa OTHER */
601 var6 = 1; /* easy <var_stop:Int> isa OTHER*/
602 if (unlikely(!var6)) {
603 var_class_name = type_kernel__Int.name;
604 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
605 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
606 show_backtrace(1);
607 }
608 var7 = var_from < var_stop;
609 var4 = var7;
610 goto RET_LABEL5;
611 RET_LABEL5:(void)0;
612 }
613 }
614 if (var4){
615 {
616 var8 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Text__chars]))(var_s) /* chars on <var_s:Text>*/;
617 }
618 {
619 var9 = ((val* (*)(val*, long))(var8->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var8, var_from) /* [] on <var8:SequenceRead[Char]>*/;
620 }
621 {
622 { /* Inline kernel#Char#== (var9,self) on <var9:nullable Object(Char)> */
623 var13 = (var9 != NULL) && (var9->class == &class_kernel__Char);
624 if (var13) {
625 var14 = ((struct instance_kernel__Char*)var9)->value; /* autounbox from nullable Object to Char */;
626 var13 = (var14 == self);
627 }
628 var11 = var13;
629 goto RET_LABEL12;
630 RET_LABEL12:(void)0;
631 }
632 var10 = var11;
633 }
634 if (var10){
635 var = var_from;
636 goto RET_LABEL;
637 } else {
638 }
639 var15 = 1;
640 {
641 { /* Inline kernel#Int#+ (var_from,var15) on <var_from:Int> */
642 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
643 /* <var15:Int> isa OTHER */
644 var18 = 1; /* easy <var15:Int> isa OTHER*/
645 if (unlikely(!var18)) {
646 var_class_name21 = type_kernel__Int.name;
647 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
648 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
649 show_backtrace(1);
650 }
651 var22 = var_from + var15;
652 var16 = var22;
653 goto RET_LABEL17;
654 RET_LABEL17:(void)0;
655 }
656 }
657 var_from = var16;
658 } else {
659 goto BREAK_label;
660 }
661 }
662 BREAK_label: (void)0;
663 var23 = 1;
664 {
665 { /* Inline kernel#Int#unary - (var23) on <var23:Int> */
666 var26 = -var23;
667 var24 = var26;
668 goto RET_LABEL25;
669 RET_LABEL25:(void)0;
670 }
671 }
672 var = var24;
673 goto RET_LABEL;
674 RET_LABEL:;
675 return var;
676 }
677 /* method string_search#Char#search_index_in for (self: Object, Text, Int): Int */
678 long VIRTUAL_string_search__Char__search_index_in(val* self, val* p0, long p1) {
679 long var /* : Int */;
680 long var1 /* : Int */;
681 char var2 /* : Char */;
682 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
683 var1 = string_search__Char__search_index_in(var2, p0, p1);
684 var = var1;
685 RET_LABEL:;
686 return var;
687 }
688 /* method string_search#Char#search_in for (self: Char, Text, Int): nullable Match */
689 val* string_search__Char__search_in(char self, val* p0, long p1) {
690 val* var /* : nullable Match */;
691 val* var_s /* var s: Text */;
692 long var_from /* var from: Int */;
693 long var1 /* : Int */;
694 long var_pos /* var pos: Int */;
695 long var2 /* : Int */;
696 short int var3 /* : Bool */;
697 short int var5 /* : Bool */;
698 int cltype;
699 int idtype;
700 const char* var_class_name;
701 short int var6 /* : Bool */;
702 val* var7 /* : null */;
703 val* var8 /* : Match */;
704 val* var9 /* : String */;
705 long var10 /* : Int */;
706 var_s = p0;
707 var_from = p1;
708 {
709 var1 = string_search__Char__search_index_in(self, var_s, var_from);
710 }
711 var_pos = var1;
712 var2 = 0;
713 {
714 { /* Inline kernel#Int#< (var_pos,var2) on <var_pos:Int> */
715 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
716 /* <var2:Int> isa OTHER */
717 var5 = 1; /* easy <var2:Int> isa OTHER*/
718 if (unlikely(!var5)) {
719 var_class_name = type_kernel__Int.name;
720 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
721 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
722 show_backtrace(1);
723 }
724 var6 = var_pos < var2;
725 var3 = var6;
726 goto RET_LABEL4;
727 RET_LABEL4:(void)0;
728 }
729 }
730 if (var3){
731 var7 = NULL;
732 var = var7;
733 goto RET_LABEL;
734 } else {
735 var8 = NEW_string_search__Match(&type_string_search__Match);
736 {
737 var9 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Text>*/;
738 }
739 var10 = 1;
740 {
741 string_search__Match__init(var8, var9, var_pos, var10); /* Direct call string_search#Match#init on <var8:Match>*/
742 }
743 var = var8;
744 goto RET_LABEL;
745 }
746 RET_LABEL:;
747 return var;
748 }
749 /* method string_search#Char#search_in for (self: Object, Text, Int): nullable Match */
750 val* VIRTUAL_string_search__Char__search_in(val* self, val* p0, long p1) {
751 val* var /* : nullable Match */;
752 val* var1 /* : nullable Match */;
753 char var2 /* : Char */;
754 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
755 var1 = string_search__Char__search_in(var2, p0, p1);
756 var = var1;
757 RET_LABEL:;
758 return var;
759 }
760 /* method string_search#Text#search_index_in for (self: Text, Text, Int): Int */
761 long string_search__Text__search_index_in(val* self, val* p0, long p1) {
762 long var /* : Int */;
763 val* var_s /* var s: Text */;
764 long var_from /* var from: Int */;
765 long var1 /* : Int */;
766 short int var2 /* : Bool */;
767 short int var4 /* : Bool */;
768 int cltype;
769 int idtype;
770 const char* var_class_name;
771 short int var5 /* : Bool */;
772 long var6 /* : Int */;
773 long var8 /* : Int */;
774 long var9 /* : Int */;
775 long var11 /* : Int */;
776 long var12 /* : Int */;
777 short int var14 /* : Bool */;
778 int cltype15;
779 int idtype16;
780 const char* var_class_name17;
781 long var18 /* : Int */;
782 long var19 /* : Int */;
783 long var20 /* : Int */;
784 short int var22 /* : Bool */;
785 int cltype23;
786 int idtype24;
787 const char* var_class_name25;
788 long var26 /* : Int */;
789 long var_stop /* var stop: Int */;
790 short int var27 /* : Bool */;
791 short int var29 /* : Bool */;
792 int cltype30;
793 int idtype31;
794 const char* var_class_name32;
795 short int var33 /* : Bool */;
796 long var34 /* : Int */;
797 long var36 /* : Int */;
798 long var37 /* : Int */;
799 long var38 /* : Int */;
800 short int var40 /* : Bool */;
801 int cltype41;
802 int idtype42;
803 const char* var_class_name43;
804 long var44 /* : Int */;
805 long var_i /* var i: Int */;
806 short int var45 /* : Bool */;
807 long var46 /* : Int */;
808 short int var47 /* : Bool */;
809 short int var49 /* : Bool */;
810 int cltype50;
811 int idtype51;
812 const char* var_class_name52;
813 short int var53 /* : Bool */;
814 short int var_ /* var : Bool */;
815 val* var54 /* : SequenceRead[Char] */;
816 val* var55 /* : nullable Object */;
817 val* var56 /* : SequenceRead[Char] */;
818 long var57 /* : Int */;
819 short int var59 /* : Bool */;
820 int cltype60;
821 int idtype61;
822 const char* var_class_name62;
823 long var63 /* : Int */;
824 val* var64 /* : nullable Object */;
825 short int var65 /* : Bool */;
826 short int var66 /* : Bool */;
827 short int var68 /* : Bool */;
828 long var69 /* : Int */;
829 long var70 /* : Int */;
830 short int var72 /* : Bool */;
831 int cltype73;
832 int idtype74;
833 const char* var_class_name75;
834 long var76 /* : Int */;
835 long var77 /* : Int */;
836 short int var78 /* : Bool */;
837 short int var80 /* : Bool */;
838 int cltype81;
839 int idtype82;
840 const char* var_class_name83;
841 short int var84 /* : Bool */;
842 long var85 /* : Int */;
843 long var86 /* : Int */;
844 short int var88 /* : Bool */;
845 int cltype89;
846 int idtype90;
847 const char* var_class_name91;
848 long var92 /* : Int */;
849 long var94 /* : Int */;
850 long var95 /* : Int */;
851 long var97 /* : Int */;
852 var_s = p0;
853 var_from = p1;
854 var1 = 0;
855 {
856 { /* Inline kernel#Int#>= (var_from,var1) on <var_from:Int> */
857 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
858 /* <var1:Int> isa OTHER */
859 var4 = 1; /* easy <var1:Int> isa OTHER*/
860 if (unlikely(!var4)) {
861 var_class_name = type_kernel__Int.name;
862 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
863 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
864 show_backtrace(1);
865 }
866 var5 = var_from >= var1;
867 var2 = var5;
868 goto RET_LABEL3;
869 RET_LABEL3:(void)0;
870 }
871 }
872 if (unlikely(!var2)) {
873 PRINT_ERROR("Runtime error: %s", "Assert failed");
874 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 299);
875 show_backtrace(1);
876 }
877 {
878 { /* Inline string#FlatText#length (var_s) on <var_s:Text> */
879 var8 = var_s->attrs[COLOR_string__FlatText___length].l; /* _length on <var_s:Text> */
880 var6 = var8;
881 RET_LABEL7:(void)0;
882 }
883 }
884 {
885 { /* Inline string#FlatText#length (self) on <self:Text> */
886 var11 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:Text> */
887 var9 = var11;
888 RET_LABEL10:(void)0;
889 }
890 }
891 {
892 { /* Inline kernel#Int#- (var6,var9) on <var6:Int> */
893 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
894 /* <var9:Int> isa OTHER */
895 var14 = 1; /* easy <var9:Int> isa OTHER*/
896 if (unlikely(!var14)) {
897 var_class_name17 = type_kernel__Int.name;
898 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
899 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
900 show_backtrace(1);
901 }
902 var18 = var6 - var9;
903 var12 = var18;
904 goto RET_LABEL13;
905 RET_LABEL13:(void)0;
906 }
907 }
908 var19 = 1;
909 {
910 { /* Inline kernel#Int#+ (var12,var19) on <var12:Int> */
911 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
912 /* <var19:Int> isa OTHER */
913 var22 = 1; /* easy <var19:Int> isa OTHER*/
914 if (unlikely(!var22)) {
915 var_class_name25 = type_kernel__Int.name;
916 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
917 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
918 show_backtrace(1);
919 }
920 var26 = var12 + var19;
921 var20 = var26;
922 goto RET_LABEL21;
923 RET_LABEL21:(void)0;
924 }
925 }
926 var_stop = var20;
927 for(;;) {
928 {
929 { /* Inline kernel#Int#< (var_from,var_stop) on <var_from:Int> */
930 /* Covariant cast for argument 0 (i) <var_stop:Int> isa OTHER */
931 /* <var_stop:Int> isa OTHER */
932 var29 = 1; /* easy <var_stop:Int> isa OTHER*/
933 if (unlikely(!var29)) {
934 var_class_name32 = type_kernel__Int.name;
935 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
936 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
937 show_backtrace(1);
938 }
939 var33 = var_from < var_stop;
940 var27 = var33;
941 goto RET_LABEL28;
942 RET_LABEL28:(void)0;
943 }
944 }
945 if (var27){
946 {
947 { /* Inline string#FlatText#length (self) on <self:Text> */
948 var36 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:Text> */
949 var34 = var36;
950 RET_LABEL35:(void)0;
951 }
952 }
953 var37 = 1;
954 {
955 { /* Inline kernel#Int#- (var34,var37) on <var34:Int> */
956 /* Covariant cast for argument 0 (i) <var37:Int> isa OTHER */
957 /* <var37:Int> isa OTHER */
958 var40 = 1; /* easy <var37:Int> isa OTHER*/
959 if (unlikely(!var40)) {
960 var_class_name43 = type_kernel__Int.name;
961 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
962 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
963 show_backtrace(1);
964 }
965 var44 = var34 - var37;
966 var38 = var44;
967 goto RET_LABEL39;
968 RET_LABEL39:(void)0;
969 }
970 }
971 var_i = var38;
972 for(;;) {
973 var46 = 0;
974 {
975 { /* Inline kernel#Int#>= (var_i,var46) on <var_i:Int> */
976 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
977 /* <var46:Int> isa OTHER */
978 var49 = 1; /* easy <var46:Int> isa OTHER*/
979 if (unlikely(!var49)) {
980 var_class_name52 = type_kernel__Int.name;
981 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
982 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
983 show_backtrace(1);
984 }
985 var53 = var_i >= var46;
986 var47 = var53;
987 goto RET_LABEL48;
988 RET_LABEL48:(void)0;
989 }
990 }
991 var_ = var47;
992 if (var47){
993 {
994 var54 = ((val* (*)(val*))(self->class->vft[COLOR_string__Text__chars]))(self) /* chars on <self:Text>*/;
995 }
996 {
997 var55 = ((val* (*)(val*, long))(var54->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var54, var_i) /* [] on <var54:SequenceRead[Char]>*/;
998 }
999 {
1000 var56 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Text__chars]))(var_s) /* chars on <var_s:Text>*/;
1001 }
1002 {
1003 { /* Inline kernel#Int#+ (var_i,var_from) on <var_i:Int> */
1004 /* Covariant cast for argument 0 (i) <var_from:Int> isa OTHER */
1005 /* <var_from:Int> isa OTHER */
1006 var59 = 1; /* easy <var_from:Int> isa OTHER*/
1007 if (unlikely(!var59)) {
1008 var_class_name62 = type_kernel__Int.name;
1009 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name62);
1010 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1011 show_backtrace(1);
1012 }
1013 var63 = var_i + var_from;
1014 var57 = var63;
1015 goto RET_LABEL58;
1016 RET_LABEL58:(void)0;
1017 }
1018 }
1019 {
1020 var64 = ((val* (*)(val*, long))(var56->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var56, var57) /* [] on <var56:SequenceRead[Char]>*/;
1021 }
1022 {
1023 { /* Inline kernel#Char#== (var55,var64) on <var55:nullable Object(Char)> */
1024 var68 = var55 == var64 || (((struct instance_kernel__Char*)var55)->value == ((struct instance_kernel__Char*)var64)->value);
1025 var66 = var68;
1026 goto RET_LABEL67;
1027 RET_LABEL67:(void)0;
1028 }
1029 var65 = var66;
1030 }
1031 var45 = var65;
1032 } else {
1033 var45 = var_;
1034 }
1035 if (var45){
1036 var69 = 1;
1037 {
1038 { /* Inline kernel#Int#- (var_i,var69) on <var_i:Int> */
1039 /* Covariant cast for argument 0 (i) <var69:Int> isa OTHER */
1040 /* <var69:Int> isa OTHER */
1041 var72 = 1; /* easy <var69:Int> isa OTHER*/
1042 if (unlikely(!var72)) {
1043 var_class_name75 = type_kernel__Int.name;
1044 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name75);
1045 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
1046 show_backtrace(1);
1047 }
1048 var76 = var_i - var69;
1049 var70 = var76;
1050 goto RET_LABEL71;
1051 RET_LABEL71:(void)0;
1052 }
1053 }
1054 var_i = var70;
1055 } else {
1056 goto BREAK_label;
1057 }
1058 }
1059 BREAK_label: (void)0;
1060 var77 = 0;
1061 {
1062 { /* Inline kernel#Int#< (var_i,var77) on <var_i:Int> */
1063 /* Covariant cast for argument 0 (i) <var77:Int> isa OTHER */
1064 /* <var77:Int> isa OTHER */
1065 var80 = 1; /* easy <var77:Int> isa OTHER*/
1066 if (unlikely(!var80)) {
1067 var_class_name83 = type_kernel__Int.name;
1068 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name83);
1069 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
1070 show_backtrace(1);
1071 }
1072 var84 = var_i < var77;
1073 var78 = var84;
1074 goto RET_LABEL79;
1075 RET_LABEL79:(void)0;
1076 }
1077 }
1078 if (var78){
1079 var = var_from;
1080 goto RET_LABEL;
1081 } else {
1082 }
1083 var85 = 1;
1084 {
1085 { /* Inline kernel#Int#+ (var_from,var85) on <var_from:Int> */
1086 /* Covariant cast for argument 0 (i) <var85:Int> isa OTHER */
1087 /* <var85:Int> isa OTHER */
1088 var88 = 1; /* easy <var85:Int> isa OTHER*/
1089 if (unlikely(!var88)) {
1090 var_class_name91 = type_kernel__Int.name;
1091 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name91);
1092 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1093 show_backtrace(1);
1094 }
1095 var92 = var_from + var85;
1096 var86 = var92;
1097 goto RET_LABEL87;
1098 RET_LABEL87:(void)0;
1099 }
1100 }
1101 var_from = var86;
1102 } else {
1103 goto BREAK_label93;
1104 }
1105 }
1106 BREAK_label93: (void)0;
1107 var94 = 1;
1108 {
1109 { /* Inline kernel#Int#unary - (var94) on <var94:Int> */
1110 var97 = -var94;
1111 var95 = var97;
1112 goto RET_LABEL96;
1113 RET_LABEL96:(void)0;
1114 }
1115 }
1116 var = var95;
1117 goto RET_LABEL;
1118 RET_LABEL:;
1119 return var;
1120 }
1121 /* method string_search#Text#search_index_in for (self: Object, Text, Int): Int */
1122 long VIRTUAL_string_search__Text__search_index_in(val* self, val* p0, long p1) {
1123 long var /* : Int */;
1124 long var1 /* : Int */;
1125 var1 = string_search__Text__search_index_in(self, p0, p1);
1126 var = var1;
1127 RET_LABEL:;
1128 return var;
1129 }
1130 /* method string_search#Text#search_in for (self: Text, Text, Int): nullable Match */
1131 val* string_search__Text__search_in(val* self, val* p0, long p1) {
1132 val* var /* : nullable Match */;
1133 val* var_s /* var s: Text */;
1134 long var_from /* var from: Int */;
1135 long var1 /* : Int */;
1136 long var_pos /* var pos: Int */;
1137 long var2 /* : Int */;
1138 short int var3 /* : Bool */;
1139 short int var5 /* : Bool */;
1140 int cltype;
1141 int idtype;
1142 const char* var_class_name;
1143 short int var6 /* : Bool */;
1144 val* var7 /* : null */;
1145 val* var8 /* : Match */;
1146 val* var9 /* : String */;
1147 long var10 /* : Int */;
1148 long var12 /* : Int */;
1149 var_s = p0;
1150 var_from = p1;
1151 {
1152 var1 = string_search__Text__search_index_in(self, var_s, var_from);
1153 }
1154 var_pos = var1;
1155 var2 = 0;
1156 {
1157 { /* Inline kernel#Int#< (var_pos,var2) on <var_pos:Int> */
1158 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1159 /* <var2:Int> isa OTHER */
1160 var5 = 1; /* easy <var2:Int> isa OTHER*/
1161 if (unlikely(!var5)) {
1162 var_class_name = type_kernel__Int.name;
1163 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1164 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
1165 show_backtrace(1);
1166 }
1167 var6 = var_pos < var2;
1168 var3 = var6;
1169 goto RET_LABEL4;
1170 RET_LABEL4:(void)0;
1171 }
1172 }
1173 if (var3){
1174 var7 = NULL;
1175 var = var7;
1176 goto RET_LABEL;
1177 } else {
1178 var8 = NEW_string_search__Match(&type_string_search__Match);
1179 {
1180 var9 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Text>*/;
1181 }
1182 {
1183 { /* Inline string#FlatText#length (self) on <self:Text> */
1184 var12 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:Text> */
1185 var10 = var12;
1186 RET_LABEL11:(void)0;
1187 }
1188 }
1189 {
1190 string_search__Match__init(var8, var9, var_pos, var10); /* Direct call string_search#Match#init on <var8:Match>*/
1191 }
1192 var = var8;
1193 goto RET_LABEL;
1194 }
1195 RET_LABEL:;
1196 return var;
1197 }
1198 /* method string_search#Text#search_in for (self: Object, Text, Int): nullable Match */
1199 val* VIRTUAL_string_search__Text__search_in(val* self, val* p0, long p1) {
1200 val* var /* : nullable Match */;
1201 val* var1 /* : nullable Match */;
1202 var1 = string_search__Text__search_in(self, p0, p1);
1203 var = var1;
1204 RET_LABEL:;
1205 return var;
1206 }
1207 /* method string_search#Text#split for (self: Text, Pattern): Array[Text] */
1208 val* string_search__Text__split(val* self, val* p0) {
1209 val* var /* : Array[Text] */;
1210 val* var_p /* var p: Pattern */;
1211 val* var1 /* : Array[Match] */;
1212 val* var_matches /* var matches: Array[Match] */;
1213 val* var2 /* : Array[Text] */;
1214 long var3 /* : Int */;
1215 long var5 /* : Int */;
1216 val* var_res /* var res: Array[Text] */;
1217 val* var_ /* var : Array[Match] */;
1218 val* var6 /* : ArrayIterator[nullable Object] */;
1219 val* var_7 /* var : ArrayIterator[Match] */;
1220 short int var8 /* : Bool */;
1221 val* var9 /* : nullable Object */;
1222 val* var_m /* var m: Match */;
1223 val* var10 /* : String */;
1224 short int var11 /* : Bool */;
1225 int cltype;
1226 int idtype;
1227 const struct type* type_struct;
1228 const char* var_class_name;
1229 var_p = p0;
1230 {
1231 var1 = string_search__Pattern__split_in(var_p, self);
1232 }
1233 var_matches = var1;
1234 var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraystring__Text_VTSELFTYPE]);
1235 {
1236 { /* Inline array#AbstractArrayRead#length (var_matches) on <var_matches:Array[Match]> */
1237 var5 = var_matches->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_matches:Array[Match]> */
1238 var3 = var5;
1239 RET_LABEL4:(void)0;
1240 }
1241 }
1242 {
1243 array__Array__with_capacity(var2, var3); /* Direct call array#Array#with_capacity on <var2:Array[Text]>*/
1244 }
1245 var_res = var2;
1246 var_ = var_matches;
1247 {
1248 var6 = array__AbstractArrayRead__iterator(var_);
1249 }
1250 var_7 = var6;
1251 for(;;) {
1252 {
1253 var8 = array__ArrayIterator__is_ok(var_7);
1254 }
1255 if (var8){
1256 {
1257 var9 = array__ArrayIterator__item(var_7);
1258 }
1259 var_m = var9;
1260 {
1261 var10 = string_search__Match__to_s(var_m);
1262 }
1263 /* <var10:String> isa SELFTYPE */
1264 type_struct = self->type->resolution_table->types[COLOR_string__Text_VTSELFTYPE];
1265 cltype = type_struct->color;
1266 idtype = type_struct->id;
1267 if(cltype >= var10->type->table_size) {
1268 var11 = 0;
1269 } else {
1270 var11 = var10->type->type_table[cltype] == idtype;
1271 }
1272 if (unlikely(!var11)) {
1273 var_class_name = var10 == NULL ? "null" : var10->type->name;
1274 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELFTYPE", var_class_name);
1275 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string_search.nit", 353);
1276 show_backtrace(1);
1277 }
1278 {
1279 array__Array__add(var_res, var10); /* Direct call array#Array#add on <var_res:Array[Text]>*/
1280 }
1281 {
1282 array__ArrayIterator__next(var_7); /* Direct call array#ArrayIterator#next on <var_7:ArrayIterator[Match]>*/
1283 }
1284 } else {
1285 goto BREAK_label;
1286 }
1287 }
1288 BREAK_label: (void)0;
1289 {
1290 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:ArrayIterator[Match]> */
1291 RET_LABEL12:(void)0;
1292 }
1293 }
1294 var = var_res;
1295 goto RET_LABEL;
1296 RET_LABEL:;
1297 return var;
1298 }
1299 /* method string_search#Text#split for (self: Object, Pattern): Array[Text] */
1300 val* VIRTUAL_string_search__Text__split(val* self, val* p0) {
1301 val* var /* : Array[Text] */;
1302 val* var1 /* : Array[Text] */;
1303 var1 = string_search__Text__split(self, p0);
1304 var = var1;
1305 RET_LABEL:;
1306 return var;
1307 }
1308 /* method string_search#Text#split_with for (self: Text, Pattern): Array[Text] */
1309 val* string_search__Text__split_with(val* self, val* p0) {
1310 val* var /* : Array[Text] */;
1311 val* var_p /* var p: Pattern */;
1312 val* var1 /* : Array[Text] */;
1313 var_p = p0;
1314 {
1315 var1 = string_search__Text__split(self, var_p);
1316 }
1317 var = var1;
1318 goto RET_LABEL;
1319 RET_LABEL:;
1320 return var;
1321 }
1322 /* method string_search#Text#split_with for (self: Object, Pattern): Array[Text] */
1323 val* VIRTUAL_string_search__Text__split_with(val* self, val* p0) {
1324 val* var /* : Array[Text] */;
1325 val* var1 /* : Array[Text] */;
1326 var1 = string_search__Text__split_with(self, p0);
1327 var = var1;
1328 RET_LABEL:;
1329 return var;
1330 }
1331 /* method string_search#Text#split_once_on for (self: Text, Pattern): Array[Text] */
1332 val* string_search__Text__split_once_on(val* self, val* p0) {
1333 val* var /* : Array[Text] */;
1334 val* var_p /* var p: Pattern */;
1335 long var1 /* : Int */;
1336 val* var2 /* : nullable Match */;
1337 val* var_m /* var m: nullable Match */;
1338 val* var3 /* : null */;
1339 short int var4 /* : Bool */;
1340 short int var5 /* : Bool */;
1341 val* var_other /* var other: nullable Object */;
1342 short int var7 /* : Bool */;
1343 short int var9 /* : Bool */;
1344 val* var10 /* : Array[Text] */;
1345 long var11 /* : Int */;
1346 val* var_ /* var : Array[Text] */;
1347 val* var12 /* : Array[Text] */;
1348 long var13 /* : Int */;
1349 long var14 /* : Int */;
1350 long var16 /* : Int */;
1351 val* var17 /* : Text */;
1352 long var18 /* : Int */;
1353 val* var19 /* : Text */;
1354 val* var20 /* : Array[nullable Object] */;
1355 long var21 /* : Int */;
1356 val* var22 /* : NativeArray[nullable Object] */;
1357 var_p = p0;
1358 var1 = 0;
1359 {
1360 var2 = ((val* (*)(val*, val*, long))(var_p->class->vft[COLOR_string_search__Pattern__search_in]))(var_p, self, var1) /* search_in on <var_p:Pattern>*/;
1361 }
1362 var_m = var2;
1363 var3 = NULL;
1364 if (var_m == NULL) {
1365 var4 = 1; /* is null */
1366 } else {
1367 var4 = 0; /* arg is null but recv is not */
1368 }
1369 if (0) {
1370 { /* Inline kernel#Object#== (var_m,var3) on <var_m:nullable Match> */
1371 var_other = var3;
1372 {
1373 { /* Inline kernel#Object#is_same_instance (var_m,var_other) on <var_m:nullable Match(Match)> */
1374 var9 = var_m == var_other;
1375 var7 = var9;
1376 goto RET_LABEL8;
1377 RET_LABEL8:(void)0;
1378 }
1379 }
1380 var5 = var7;
1381 goto RET_LABEL6;
1382 RET_LABEL6:(void)0;
1383 }
1384 var4 = var5;
1385 }
1386 if (var4){
1387 var10 = NEW_array__Array(&type_array__Arraystring__Text);
1388 var11 = 1;
1389 {
1390 array__Array__with_capacity(var10, var11); /* Direct call array#Array#with_capacity on <var10:Array[Text]>*/
1391 }
1392 var_ = var10;
1393 {
1394 array__AbstractArray__push(var_, self); /* Direct call array#AbstractArray#push on <var_:Array[Text]>*/
1395 }
1396 var = var_;
1397 goto RET_LABEL;
1398 } else {
1399 }
1400 var12 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraystring__Text_VTSELFTYPE]);
1401 var13 = 0;
1402 {
1403 { /* Inline string_search#Match#from (var_m) on <var_m:nullable Match(Match)> */
1404 var16 = var_m->attrs[COLOR_string_search__Match___from].l; /* _from on <var_m:nullable Match(Match)> */
1405 var14 = var16;
1406 RET_LABEL15:(void)0;
1407 }
1408 }
1409 {
1410 var17 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__Text__substring]))(self, var13, var14) /* substring on <self:Text>*/;
1411 }
1412 {
1413 var18 = string_search__Match__after(var_m);
1414 }
1415 {
1416 var19 = string__Text__substring_from(self, var18);
1417 }
1418 var20 = NEW_array__Array(var12->type->resolution_table->types[COLOR_array__Arrayarray__Array_FT0]);
1419 { /* var20 = array_instance Array[E] */
1420 var21 = 2;
1421 var22 = NEW_array__NativeArray(var21, var12->type->resolution_table->types[COLOR_array__NativeArrayarray__Array_FT0]);
1422 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var17;
1423 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var19;
1424 {
1425 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[nullable Object]>*/;
1426 }
1427 }
1428 {
1429 array__Array__with_items(var12, var20); /* Direct call array#Array#with_items on <var12:Array[Text]>*/
1430 }
1431 var = var12;
1432 goto RET_LABEL;
1433 RET_LABEL:;
1434 return var;
1435 }
1436 /* method string_search#Text#split_once_on for (self: Object, Pattern): Array[Text] */
1437 val* VIRTUAL_string_search__Text__split_once_on(val* self, val* p0) {
1438 val* var /* : Array[Text] */;
1439 val* var1 /* : Array[Text] */;
1440 var1 = string_search__Text__split_once_on(self, p0);
1441 var = var1;
1442 RET_LABEL:;
1443 return var;
1444 }