NOTICE: Update
[nit.git] / c_src / core__string_search.sep.1.c
1 #include "core__string_search.sep.0.h"
2 /* method string_search#Pattern#split_in for (self: Pattern, Text): Array[Match] */
3 val* core___core__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 var_i /* var i: Int */;
9 val* var2 /* : nullable Match */;
10 val* var_match /* var match: nullable Match */;
11 short int var3 /* : Bool */;
12 short int var4 /* : Bool */;
13 val* var_other /* var other: nullable Object */;
14 short int var6 /* : Bool */;
15 short int var7 /* : Bool */;
16 long var8 /* : Int */;
17 long var10 /* : Int */;
18 long var11 /* : Int */;
19 short int var13 /* : Bool */;
20 int cltype;
21 int idtype;
22 const char* var_class_name;
23 long var14 /* : Int */;
24 long var_len /* var len: Int */;
25 val* var15 /* : Match */;
26 val* var16 /* : String */;
27 long var17 /* : Int */;
28 val* var18 /* : nullable Match */;
29 val* var19 /* : Match */;
30 val* var20 /* : String */;
31 long var21 /* : Int */;
32 long var22 /* : Int */;
33 short int var24 /* : Bool */;
34 int cltype25;
35 int idtype26;
36 const char* var_class_name27;
37 long var28 /* : Int */;
38 var_s = p0;
39 var1 = NEW_core__Array(&type_core__Array__core__Match);
40 {
41 core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[Match]>*/
42 }
43 var_res = var1;
44 var_i = 0l;
45 {
46 var2 = ((val*(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__string_search__Pattern__search_in]))(self, var_s, 0l); /* search_in on <self:Pattern>*/
47 }
48 var_match = var2;
49 for(;;) {
50 if (var_match == NULL) {
51 var3 = 0; /* is null */
52 } else {
53 var3 = 1; /* arg is null and recv is not */
54 }
55 if (0) {
56 { /* Inline kernel#Object#!= (var_match,((val*)NULL)) on <var_match:nullable Match> */
57 var_other = ((val*)NULL);
58 {
59 var6 = ((short int(*)(val* self, val* p0))(var_match->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_match, var_other); /* == on <var_match:nullable Match(Match)>*/
60 }
61 var7 = !var6;
62 var4 = var7;
63 goto RET_LABEL5;
64 RET_LABEL5:(void)0;
65 }
66 var3 = var4;
67 }
68 if (var3){
69 {
70 { /* Inline string_search#Match#from (var_match) on <var_match:nullable Match(Match)> */
71 var10 = var_match->attrs[COLOR_core__string_search__Match___from].l; /* _from on <var_match:nullable Match(Match)> */
72 var8 = var10;
73 RET_LABEL9:(void)0;
74 }
75 }
76 {
77 { /* Inline kernel#Int#- (var8,var_i) on <var8:Int> */
78 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
79 /* <var_i:Int> isa OTHER */
80 var13 = 1; /* easy <var_i:Int> isa OTHER*/
81 if (unlikely(!var13)) {
82 var_class_name = type_core__Int.name;
83 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
84 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
85 fatal_exit(1);
86 }
87 var14 = var8 - var_i;
88 var11 = var14;
89 goto RET_LABEL12;
90 RET_LABEL12:(void)0;
91 }
92 }
93 var_len = var11;
94 var15 = NEW_core__Match(&type_core__Match);
95 {
96 var16 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_s); /* to_s on <var_s:Text>*/
97 }
98 {
99 ((void(*)(val* self, val* p0))(var15->class->vft[COLOR_core__string_search__Match__string_61d]))(var15, var16); /* string= on <var15:Match>*/
100 }
101 {
102 ((void(*)(val* self, long p0))(var15->class->vft[COLOR_core__string_search__Match__from_61d]))(var15, var_i); /* from= on <var15:Match>*/
103 }
104 {
105 ((void(*)(val* self, long p0))(var15->class->vft[COLOR_core__string_search__Match__length_61d]))(var15, var_len); /* length= on <var15:Match>*/
106 }
107 {
108 ((void(*)(val* self))(var15->class->vft[COLOR_core__kernel__Object__init]))(var15); /* init on <var15:Match>*/
109 }
110 {
111 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var15); /* Direct call array#Array#add on <var_res:Array[Match]>*/
112 }
113 {
114 var17 = core___core__Match___after(var_match);
115 }
116 var_i = var17;
117 {
118 var18 = ((val*(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__string_search__Pattern__search_in]))(self, var_s, var_i); /* search_in on <self:Pattern>*/
119 }
120 var_match = var18;
121 } else {
122 goto BREAK_label;
123 }
124 }
125 BREAK_label: (void)0;
126 var19 = NEW_core__Match(&type_core__Match);
127 {
128 var20 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_s); /* to_s on <var_s:Text>*/
129 }
130 {
131 var21 = ((long(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Text__length]))(var_s); /* length on <var_s:Text>*/
132 }
133 {
134 { /* Inline kernel#Int#- (var21,var_i) on <var21:Int> */
135 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
136 /* <var_i:Int> isa OTHER */
137 var24 = 1; /* easy <var_i:Int> isa OTHER*/
138 if (unlikely(!var24)) {
139 var_class_name27 = type_core__Int.name;
140 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
141 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
142 fatal_exit(1);
143 }
144 var28 = var21 - var_i;
145 var22 = var28;
146 goto RET_LABEL23;
147 RET_LABEL23:(void)0;
148 }
149 }
150 {
151 ((void(*)(val* self, val* p0))(var19->class->vft[COLOR_core__string_search__Match__string_61d]))(var19, var20); /* string= on <var19:Match>*/
152 }
153 {
154 ((void(*)(val* self, long p0))(var19->class->vft[COLOR_core__string_search__Match__from_61d]))(var19, var_i); /* from= on <var19:Match>*/
155 }
156 {
157 ((void(*)(val* self, long p0))(var19->class->vft[COLOR_core__string_search__Match__length_61d]))(var19, var22); /* length= on <var19:Match>*/
158 }
159 {
160 ((void(*)(val* self))(var19->class->vft[COLOR_core__kernel__Object__init]))(var19); /* init on <var19:Match>*/
161 }
162 {
163 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var19); /* Direct call array#Array#add on <var_res:Array[Match]>*/
164 }
165 var = var_res;
166 goto RET_LABEL;
167 RET_LABEL:;
168 return var;
169 }
170 /* method string_search#Match#string for (self: Match): String */
171 val* core___core__Match___string(val* self) {
172 val* var /* : String */;
173 val* var1 /* : String */;
174 var1 = self->attrs[COLOR_core__string_search__Match___string].val; /* _string on <self:Match> */
175 if (unlikely(var1 == NULL)) {
176 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _string");
177 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 239);
178 fatal_exit(1);
179 }
180 var = var1;
181 RET_LABEL:;
182 return var;
183 }
184 /* method string_search#Match#string= for (self: Match, String) */
185 void core___core__Match___string_61d(val* self, val* p0) {
186 self->attrs[COLOR_core__string_search__Match___string].val = p0; /* _string on <self:Match> */
187 RET_LABEL:;
188 }
189 /* method string_search#Match#from for (self: Match): Int */
190 long core___core__Match___from(val* self) {
191 long var /* : Int */;
192 long var1 /* : Int */;
193 var1 = self->attrs[COLOR_core__string_search__Match___from].l; /* _from on <self:Match> */
194 var = var1;
195 RET_LABEL:;
196 return var;
197 }
198 /* method string_search#Match#from= for (self: Match, Int) */
199 void core___core__Match___from_61d(val* self, long p0) {
200 self->attrs[COLOR_core__string_search__Match___from].l = p0; /* _from on <self:Match> */
201 RET_LABEL:;
202 }
203 /* method string_search#Match#length for (self: Match): Int */
204 long core___core__Match___length(val* self) {
205 long var /* : Int */;
206 long var1 /* : Int */;
207 var1 = self->attrs[COLOR_core__string_search__Match___length].l; /* _length on <self:Match> */
208 var = var1;
209 RET_LABEL:;
210 return var;
211 }
212 /* method string_search#Match#length= for (self: Match, Int) */
213 void core___core__Match___length_61d(val* self, long p0) {
214 self->attrs[COLOR_core__string_search__Match___length].l = p0; /* _length on <self:Match> */
215 RET_LABEL:;
216 }
217 /* method string_search#Match#after for (self: Match): Int */
218 long core___core__Match___after(val* self) {
219 long var /* : Int */;
220 long var1 /* : Int */;
221 long var3 /* : Int */;
222 long var4 /* : Int */;
223 long var6 /* : Int */;
224 long var7 /* : Int */;
225 short int var9 /* : Bool */;
226 int cltype;
227 int idtype;
228 const char* var_class_name;
229 long var10 /* : Int */;
230 {
231 { /* Inline string_search#Match#from (self) on <self:Match> */
232 var3 = self->attrs[COLOR_core__string_search__Match___from].l; /* _from on <self:Match> */
233 var1 = var3;
234 RET_LABEL2:(void)0;
235 }
236 }
237 {
238 { /* Inline string_search#Match#length (self) on <self:Match> */
239 var6 = self->attrs[COLOR_core__string_search__Match___length].l; /* _length on <self:Match> */
240 var4 = var6;
241 RET_LABEL5:(void)0;
242 }
243 }
244 {
245 { /* Inline kernel#Int#+ (var1,var4) on <var1:Int> */
246 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
247 /* <var4:Int> isa OTHER */
248 var9 = 1; /* easy <var4:Int> isa OTHER*/
249 if (unlikely(!var9)) {
250 var_class_name = type_core__Int.name;
251 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
252 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
253 fatal_exit(1);
254 }
255 var10 = var1 + var4;
256 var7 = var10;
257 goto RET_LABEL8;
258 RET_LABEL8:(void)0;
259 }
260 }
261 var = var7;
262 goto RET_LABEL;
263 RET_LABEL:;
264 return var;
265 }
266 /* method string_search#Match#to_s for (self: Match): String */
267 val* core___core__Match___core__abstract_text__Object__to_s(val* self) {
268 val* var /* : String */;
269 val* var1 /* : String */;
270 val* var3 /* : String */;
271 long var4 /* : Int */;
272 long var6 /* : Int */;
273 long var7 /* : Int */;
274 long var9 /* : Int */;
275 val* var10 /* : Text */;
276 {
277 { /* Inline string_search#Match#string (self) on <self:Match> */
278 var3 = self->attrs[COLOR_core__string_search__Match___string].val; /* _string on <self:Match> */
279 if (unlikely(var3 == NULL)) {
280 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _string");
281 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 239);
282 fatal_exit(1);
283 }
284 var1 = var3;
285 RET_LABEL2:(void)0;
286 }
287 }
288 {
289 { /* Inline string_search#Match#from (self) on <self:Match> */
290 var6 = self->attrs[COLOR_core__string_search__Match___from].l; /* _from on <self:Match> */
291 var4 = var6;
292 RET_LABEL5:(void)0;
293 }
294 }
295 {
296 { /* Inline string_search#Match#length (self) on <self:Match> */
297 var9 = self->attrs[COLOR_core__string_search__Match___length].l; /* _length on <self:Match> */
298 var7 = var9;
299 RET_LABEL8:(void)0;
300 }
301 }
302 {
303 var10 = ((val*(*)(val* self, long p0, long p1))(var1->class->vft[COLOR_core__abstract_text__Text__substring]))(var1, var4, var7); /* substring on <var1:String>*/
304 }
305 var = var10;
306 goto RET_LABEL;
307 RET_LABEL:;
308 return var;
309 }
310 /* method string_search#Match#init for (self: Match) */
311 void core___core__Match___core__kernel__Object__init(val* self) {
312 long var /* : Int */;
313 long var2 /* : Int */;
314 short int var3 /* : Bool */;
315 short int var5 /* : Bool */;
316 int cltype;
317 int idtype;
318 const char* var_class_name;
319 short int var6 /* : Bool */;
320 long var7 /* : Int */;
321 long var9 /* : Int */;
322 short int var10 /* : Bool */;
323 short int var12 /* : Bool */;
324 int cltype13;
325 int idtype14;
326 const char* var_class_name15;
327 short int var16 /* : Bool */;
328 long var17 /* : Int */;
329 long var19 /* : Int */;
330 long var20 /* : Int */;
331 long var22 /* : Int */;
332 long var23 /* : Int */;
333 short int var25 /* : Bool */;
334 int cltype26;
335 int idtype27;
336 const char* var_class_name28;
337 long var29 /* : Int */;
338 val* var30 /* : String */;
339 val* var32 /* : String */;
340 long var33 /* : Int */;
341 short int var34 /* : Bool */;
342 short int var36 /* : Bool */;
343 int cltype37;
344 int idtype38;
345 const char* var_class_name39;
346 short int var40 /* : Bool */;
347 {
348 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Match___core__kernel__Object__init]))(self); /* init on <self:Match>*/
349 }
350 {
351 { /* Inline string_search#Match#length (self) on <self:Match> */
352 var2 = self->attrs[COLOR_core__string_search__Match___length].l; /* _length on <self:Match> */
353 var = var2;
354 RET_LABEL1:(void)0;
355 }
356 }
357 {
358 { /* Inline kernel#Int#>= (var,0l) on <var:Int> */
359 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
360 /* <0l:Int> isa OTHER */
361 var5 = 1; /* easy <0l:Int> isa OTHER*/
362 if (unlikely(!var5)) {
363 var_class_name = type_core__Int.name;
364 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
365 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
366 fatal_exit(1);
367 }
368 var6 = var >= 0l;
369 var3 = var6;
370 goto RET_LABEL4;
371 RET_LABEL4:(void)0;
372 }
373 }
374 if (unlikely(!var3)) {
375 PRINT_ERROR("Runtime error: %s", "Assert \'positive_length\' failed");
376 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 298);
377 fatal_exit(1);
378 }
379 {
380 { /* Inline string_search#Match#from (self) on <self:Match> */
381 var9 = self->attrs[COLOR_core__string_search__Match___from].l; /* _from on <self:Match> */
382 var7 = var9;
383 RET_LABEL8:(void)0;
384 }
385 }
386 {
387 { /* Inline kernel#Int#>= (var7,0l) on <var7:Int> */
388 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
389 /* <0l:Int> isa OTHER */
390 var12 = 1; /* easy <0l:Int> isa OTHER*/
391 if (unlikely(!var12)) {
392 var_class_name15 = type_core__Int.name;
393 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
394 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
395 fatal_exit(1);
396 }
397 var16 = var7 >= 0l;
398 var10 = var16;
399 goto RET_LABEL11;
400 RET_LABEL11:(void)0;
401 }
402 }
403 if (unlikely(!var10)) {
404 PRINT_ERROR("Runtime error: %s", "Assert \'valid_from\' failed");
405 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 299);
406 fatal_exit(1);
407 }
408 {
409 { /* Inline string_search#Match#from (self) on <self:Match> */
410 var19 = self->attrs[COLOR_core__string_search__Match___from].l; /* _from on <self:Match> */
411 var17 = var19;
412 RET_LABEL18:(void)0;
413 }
414 }
415 {
416 { /* Inline string_search#Match#length (self) on <self:Match> */
417 var22 = self->attrs[COLOR_core__string_search__Match___length].l; /* _length on <self:Match> */
418 var20 = var22;
419 RET_LABEL21:(void)0;
420 }
421 }
422 {
423 { /* Inline kernel#Int#+ (var17,var20) on <var17:Int> */
424 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
425 /* <var20:Int> isa OTHER */
426 var25 = 1; /* easy <var20:Int> isa OTHER*/
427 if (unlikely(!var25)) {
428 var_class_name28 = type_core__Int.name;
429 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
430 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
431 fatal_exit(1);
432 }
433 var29 = var17 + var20;
434 var23 = var29;
435 goto RET_LABEL24;
436 RET_LABEL24:(void)0;
437 }
438 }
439 {
440 { /* Inline string_search#Match#string (self) on <self:Match> */
441 var32 = self->attrs[COLOR_core__string_search__Match___string].val; /* _string on <self:Match> */
442 if (unlikely(var32 == NULL)) {
443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _string");
444 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 239);
445 fatal_exit(1);
446 }
447 var30 = var32;
448 RET_LABEL31:(void)0;
449 }
450 }
451 {
452 var33 = ((long(*)(val* self))(var30->class->vft[COLOR_core__abstract_text__Text__length]))(var30); /* length on <var30:String>*/
453 }
454 {
455 { /* Inline kernel#Int#<= (var23,var33) on <var23:Int> */
456 /* Covariant cast for argument 0 (i) <var33:Int> isa OTHER */
457 /* <var33:Int> isa OTHER */
458 var36 = 1; /* easy <var33:Int> isa OTHER*/
459 if (unlikely(!var36)) {
460 var_class_name39 = type_core__Int.name;
461 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
462 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
463 fatal_exit(1);
464 }
465 var40 = var23 <= var33;
466 var34 = var40;
467 goto RET_LABEL35;
468 RET_LABEL35:(void)0;
469 }
470 }
471 if (unlikely(!var34)) {
472 PRINT_ERROR("Runtime error: %s", "Assert \'valid_after\' failed");
473 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 300);
474 fatal_exit(1);
475 }
476 RET_LABEL:;
477 }
478 /* method string_search#Char#search_index_in for (self: Char, Text, Int): Int */
479 long core__string_search___Char___Pattern__search_index_in(uint32_t self, val* p0, long p1) {
480 long var /* : Int */;
481 val* var_s /* var s: Text */;
482 long var_from /* var from: Int */;
483 long var1 /* : Int */;
484 long var_stop /* var stop: Int */;
485 short int var2 /* : Bool */;
486 short int var4 /* : Bool */;
487 int cltype;
488 int idtype;
489 const char* var_class_name;
490 short int var5 /* : Bool */;
491 val* var6 /* : SequenceRead[Char] */;
492 val* var7 /* : nullable Object */;
493 short int var8 /* : Bool */;
494 short int var10 /* : Bool */;
495 uint32_t var11 /* : Char */;
496 long var12 /* : Int */;
497 short int var14 /* : Bool */;
498 int cltype15;
499 int idtype16;
500 const char* var_class_name17;
501 long var18 /* : Int */;
502 long var19 /* : Int */;
503 long var21 /* : Int */;
504 var_s = p0;
505 var_from = p1;
506 {
507 var1 = ((long(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Text__length]))(var_s); /* length on <var_s:Text>*/
508 }
509 var_stop = var1;
510 for(;;) {
511 {
512 { /* Inline kernel#Int#< (var_from,var_stop) on <var_from:Int> */
513 /* Covariant cast for argument 0 (i) <var_stop:Int> isa OTHER */
514 /* <var_stop:Int> isa OTHER */
515 var4 = 1; /* easy <var_stop:Int> isa OTHER*/
516 if (unlikely(!var4)) {
517 var_class_name = type_core__Int.name;
518 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
519 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
520 fatal_exit(1);
521 }
522 var5 = var_from < var_stop;
523 var2 = var5;
524 goto RET_LABEL3;
525 RET_LABEL3:(void)0;
526 }
527 }
528 if (var2){
529 {
530 var6 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Text__chars]))(var_s); /* chars on <var_s:Text>*/
531 }
532 {
533 var7 = ((val*(*)(val* self, long p0))((((long)var6&3)?class_info[((long)var6&3)]:var6->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var6, var_from); /* [] on <var6:SequenceRead[Char]>*/
534 }
535 {
536 { /* Inline kernel#Char#== (var7,self) on <var7:nullable Object(Char)> */
537 var11 = (uint32_t)((long)(var7)>>2);
538 var10 = var11 == self;
539 var8 = var10;
540 goto RET_LABEL9;
541 RET_LABEL9:(void)0;
542 }
543 }
544 if (var8){
545 var = var_from;
546 goto RET_LABEL;
547 } else {
548 }
549 {
550 { /* Inline kernel#Int#+ (var_from,1l) on <var_from:Int> */
551 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
552 /* <1l:Int> isa OTHER */
553 var14 = 1; /* easy <1l:Int> isa OTHER*/
554 if (unlikely(!var14)) {
555 var_class_name17 = type_core__Int.name;
556 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
557 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
558 fatal_exit(1);
559 }
560 var18 = var_from + 1l;
561 var12 = var18;
562 goto RET_LABEL13;
563 RET_LABEL13:(void)0;
564 }
565 }
566 var_from = var12;
567 } else {
568 goto BREAK_label;
569 }
570 }
571 BREAK_label: (void)0;
572 {
573 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
574 var21 = -1l;
575 var19 = var21;
576 goto RET_LABEL20;
577 RET_LABEL20:(void)0;
578 }
579 }
580 var = var19;
581 goto RET_LABEL;
582 RET_LABEL:;
583 return var;
584 }
585 /* method string_search#Char#search_index_in for (self: Pattern, Text, Int): Int */
586 long VIRTUAL_core__string_search___Char___Pattern__search_index_in(val* self, val* p0, long p1) {
587 long var /* : Int */;
588 long var1 /* : Int */;
589 uint32_t var2 /* : Char */;
590 var2 = (uint32_t)((long)(self)>>2);
591 var1 = core__string_search___Char___Pattern__search_index_in(var2, p0, p1);
592 var = var1;
593 RET_LABEL:;
594 return var;
595 }
596 /* method string_search#Char#search_in for (self: Char, Text, Int): nullable Match */
597 val* core__string_search___Char___Pattern__search_in(uint32_t self, val* p0, long p1) {
598 val* var /* : nullable Match */;
599 val* var_s /* var s: Text */;
600 long var_from /* var from: Int */;
601 long var1 /* : Int */;
602 long var_pos /* var pos: Int */;
603 short int var2 /* : Bool */;
604 short int var4 /* : Bool */;
605 int cltype;
606 int idtype;
607 const char* var_class_name;
608 short int var5 /* : Bool */;
609 val* var6 /* : Match */;
610 val* var7 /* : String */;
611 var_s = p0;
612 var_from = p1;
613 {
614 var1 = core__string_search___Char___Pattern__search_index_in(self, var_s, var_from);
615 }
616 var_pos = var1;
617 {
618 { /* Inline kernel#Int#< (var_pos,0l) on <var_pos:Int> */
619 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
620 /* <0l:Int> isa OTHER */
621 var4 = 1; /* easy <0l:Int> isa OTHER*/
622 if (unlikely(!var4)) {
623 var_class_name = type_core__Int.name;
624 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
625 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
626 fatal_exit(1);
627 }
628 var5 = var_pos < 0l;
629 var2 = var5;
630 goto RET_LABEL3;
631 RET_LABEL3:(void)0;
632 }
633 }
634 if (var2){
635 var = ((val*)NULL);
636 goto RET_LABEL;
637 } else {
638 var6 = NEW_core__Match(&type_core__Match);
639 {
640 var7 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_s); /* to_s on <var_s:Text>*/
641 }
642 {
643 ((void(*)(val* self, val* p0))(var6->class->vft[COLOR_core__string_search__Match__string_61d]))(var6, var7); /* string= on <var6:Match>*/
644 }
645 {
646 ((void(*)(val* self, long p0))(var6->class->vft[COLOR_core__string_search__Match__from_61d]))(var6, var_pos); /* from= on <var6:Match>*/
647 }
648 {
649 ((void(*)(val* self, long p0))(var6->class->vft[COLOR_core__string_search__Match__length_61d]))(var6, 1l); /* length= on <var6:Match>*/
650 }
651 {
652 ((void(*)(val* self))(var6->class->vft[COLOR_core__kernel__Object__init]))(var6); /* init on <var6:Match>*/
653 }
654 var = var6;
655 goto RET_LABEL;
656 }
657 RET_LABEL:;
658 return var;
659 }
660 /* method string_search#Char#search_in for (self: Pattern, Text, Int): nullable Match */
661 val* VIRTUAL_core__string_search___Char___Pattern__search_in(val* self, val* p0, long p1) {
662 val* var /* : nullable Match */;
663 val* var1 /* : nullable Match */;
664 uint32_t var2 /* : Char */;
665 var2 = (uint32_t)((long)(self)>>2);
666 var1 = core__string_search___Char___Pattern__search_in(var2, p0, p1);
667 var = var1;
668 RET_LABEL:;
669 return var;
670 }
671 /* method string_search#Text#search_index_in for (self: Text, Text, Int): Int */
672 long core__string_search___Text___Pattern__search_index_in(val* self, val* p0, long p1) {
673 long var /* : Int */;
674 val* var_s /* var s: Text */;
675 long var_from /* var from: Int */;
676 short int var1 /* : Bool */;
677 short int var3 /* : Bool */;
678 int cltype;
679 int idtype;
680 const char* var_class_name;
681 short int var4 /* : Bool */;
682 long var5 /* : Int */;
683 long var6 /* : Int */;
684 long var7 /* : Int */;
685 short int var9 /* : Bool */;
686 int cltype10;
687 int idtype11;
688 const char* var_class_name12;
689 long var13 /* : Int */;
690 long var14 /* : Int */;
691 short int var16 /* : Bool */;
692 int cltype17;
693 int idtype18;
694 const char* var_class_name19;
695 long var20 /* : Int */;
696 long var_stop /* var stop: Int */;
697 short int var21 /* : Bool */;
698 short int var23 /* : Bool */;
699 int cltype24;
700 int idtype25;
701 const char* var_class_name26;
702 short int var27 /* : Bool */;
703 long var28 /* : Int */;
704 long var29 /* : Int */;
705 short int var31 /* : Bool */;
706 int cltype32;
707 int idtype33;
708 const char* var_class_name34;
709 long var35 /* : Int */;
710 long var_i /* var i: Int */;
711 short int var36 /* : Bool */;
712 short int var37 /* : Bool */;
713 short int var39 /* : Bool */;
714 int cltype40;
715 int idtype41;
716 const char* var_class_name42;
717 short int var43 /* : Bool */;
718 short int var_ /* var : Bool */;
719 val* var44 /* : SequenceRead[Char] */;
720 val* var45 /* : nullable Object */;
721 val* var46 /* : SequenceRead[Char] */;
722 long var47 /* : Int */;
723 short int var49 /* : Bool */;
724 int cltype50;
725 int idtype51;
726 const char* var_class_name52;
727 long var53 /* : Int */;
728 val* var54 /* : nullable Object */;
729 short int var55 /* : Bool */;
730 short int var57 /* : Bool */;
731 long var58 /* : Int */;
732 short int var60 /* : Bool */;
733 int cltype61;
734 int idtype62;
735 const char* var_class_name63;
736 long var64 /* : Int */;
737 short int var65 /* : Bool */;
738 short int var67 /* : Bool */;
739 int cltype68;
740 int idtype69;
741 const char* var_class_name70;
742 short int var71 /* : Bool */;
743 long var72 /* : Int */;
744 short int var74 /* : Bool */;
745 int cltype75;
746 int idtype76;
747 const char* var_class_name77;
748 long var78 /* : Int */;
749 long var80 /* : Int */;
750 long var82 /* : Int */;
751 var_s = p0;
752 var_from = p1;
753 {
754 { /* Inline kernel#Int#>= (var_from,0l) on <var_from:Int> */
755 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
756 /* <0l:Int> isa OTHER */
757 var3 = 1; /* easy <0l:Int> isa OTHER*/
758 if (unlikely(!var3)) {
759 var_class_name = type_core__Int.name;
760 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
761 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
762 fatal_exit(1);
763 }
764 var4 = var_from >= 0l;
765 var1 = var4;
766 goto RET_LABEL2;
767 RET_LABEL2:(void)0;
768 }
769 }
770 if (unlikely(!var1)) {
771 PRINT_ERROR("Runtime error: %s", "Assert failed");
772 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 333);
773 fatal_exit(1);
774 }
775 {
776 var5 = ((long(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Text__length]))(var_s); /* length on <var_s:Text>*/
777 }
778 {
779 var6 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
780 }
781 {
782 { /* Inline kernel#Int#- (var5,var6) on <var5:Int> */
783 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
784 /* <var6:Int> isa OTHER */
785 var9 = 1; /* easy <var6:Int> isa OTHER*/
786 if (unlikely(!var9)) {
787 var_class_name12 = type_core__Int.name;
788 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
789 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
790 fatal_exit(1);
791 }
792 var13 = var5 - var6;
793 var7 = var13;
794 goto RET_LABEL8;
795 RET_LABEL8:(void)0;
796 }
797 }
798 {
799 { /* Inline kernel#Int#+ (var7,1l) on <var7:Int> */
800 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
801 /* <1l:Int> isa OTHER */
802 var16 = 1; /* easy <1l:Int> isa OTHER*/
803 if (unlikely(!var16)) {
804 var_class_name19 = type_core__Int.name;
805 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
806 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
807 fatal_exit(1);
808 }
809 var20 = var7 + 1l;
810 var14 = var20;
811 goto RET_LABEL15;
812 RET_LABEL15:(void)0;
813 }
814 }
815 var_stop = var14;
816 for(;;) {
817 {
818 { /* Inline kernel#Int#< (var_from,var_stop) on <var_from:Int> */
819 /* Covariant cast for argument 0 (i) <var_stop:Int> isa OTHER */
820 /* <var_stop:Int> isa OTHER */
821 var23 = 1; /* easy <var_stop:Int> isa OTHER*/
822 if (unlikely(!var23)) {
823 var_class_name26 = type_core__Int.name;
824 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
825 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
826 fatal_exit(1);
827 }
828 var27 = var_from < var_stop;
829 var21 = var27;
830 goto RET_LABEL22;
831 RET_LABEL22:(void)0;
832 }
833 }
834 if (var21){
835 {
836 var28 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
837 }
838 {
839 { /* Inline kernel#Int#- (var28,1l) on <var28:Int> */
840 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
841 /* <1l:Int> isa OTHER */
842 var31 = 1; /* easy <1l:Int> isa OTHER*/
843 if (unlikely(!var31)) {
844 var_class_name34 = type_core__Int.name;
845 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
846 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
847 fatal_exit(1);
848 }
849 var35 = var28 - 1l;
850 var29 = var35;
851 goto RET_LABEL30;
852 RET_LABEL30:(void)0;
853 }
854 }
855 var_i = var29;
856 for(;;) {
857 {
858 { /* Inline kernel#Int#>= (var_i,0l) on <var_i:Int> */
859 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
860 /* <0l:Int> isa OTHER */
861 var39 = 1; /* easy <0l:Int> isa OTHER*/
862 if (unlikely(!var39)) {
863 var_class_name42 = type_core__Int.name;
864 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
865 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
866 fatal_exit(1);
867 }
868 var43 = var_i >= 0l;
869 var37 = var43;
870 goto RET_LABEL38;
871 RET_LABEL38:(void)0;
872 }
873 }
874 var_ = var37;
875 if (var37){
876 {
877 var44 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:Text>*/
878 }
879 {
880 var45 = ((val*(*)(val* self, long p0))((((long)var44&3)?class_info[((long)var44&3)]:var44->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var44, var_i); /* [] on <var44:SequenceRead[Char]>*/
881 }
882 {
883 var46 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Text__chars]))(var_s); /* chars on <var_s:Text>*/
884 }
885 {
886 { /* Inline kernel#Int#+ (var_i,var_from) on <var_i:Int> */
887 /* Covariant cast for argument 0 (i) <var_from:Int> isa OTHER */
888 /* <var_from:Int> isa OTHER */
889 var49 = 1; /* easy <var_from:Int> isa OTHER*/
890 if (unlikely(!var49)) {
891 var_class_name52 = type_core__Int.name;
892 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
893 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
894 fatal_exit(1);
895 }
896 var53 = var_i + var_from;
897 var47 = var53;
898 goto RET_LABEL48;
899 RET_LABEL48:(void)0;
900 }
901 }
902 {
903 var54 = ((val*(*)(val* self, long p0))((((long)var46&3)?class_info[((long)var46&3)]:var46->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var46, var47); /* [] on <var46:SequenceRead[Char]>*/
904 }
905 {
906 { /* Inline kernel#Char#== (var45,var54) on <var45:nullable Object(Char)> */
907 var57 = var45 == var54;
908 var55 = var57;
909 goto RET_LABEL56;
910 RET_LABEL56:(void)0;
911 }
912 }
913 var36 = var55;
914 } else {
915 var36 = var_;
916 }
917 if (var36){
918 {
919 { /* Inline kernel#Int#- (var_i,1l) on <var_i:Int> */
920 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
921 /* <1l:Int> isa OTHER */
922 var60 = 1; /* easy <1l:Int> isa OTHER*/
923 if (unlikely(!var60)) {
924 var_class_name63 = type_core__Int.name;
925 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name63);
926 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
927 fatal_exit(1);
928 }
929 var64 = var_i - 1l;
930 var58 = var64;
931 goto RET_LABEL59;
932 RET_LABEL59:(void)0;
933 }
934 }
935 var_i = var58;
936 } else {
937 goto BREAK_label;
938 }
939 }
940 BREAK_label: (void)0;
941 {
942 { /* Inline kernel#Int#< (var_i,0l) on <var_i:Int> */
943 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
944 /* <0l:Int> isa OTHER */
945 var67 = 1; /* easy <0l:Int> isa OTHER*/
946 if (unlikely(!var67)) {
947 var_class_name70 = type_core__Int.name;
948 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name70);
949 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
950 fatal_exit(1);
951 }
952 var71 = var_i < 0l;
953 var65 = var71;
954 goto RET_LABEL66;
955 RET_LABEL66:(void)0;
956 }
957 }
958 if (var65){
959 var = var_from;
960 goto RET_LABEL;
961 } else {
962 }
963 {
964 { /* Inline kernel#Int#+ (var_from,1l) on <var_from:Int> */
965 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
966 /* <1l:Int> isa OTHER */
967 var74 = 1; /* easy <1l:Int> isa OTHER*/
968 if (unlikely(!var74)) {
969 var_class_name77 = type_core__Int.name;
970 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name77);
971 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
972 fatal_exit(1);
973 }
974 var78 = var_from + 1l;
975 var72 = var78;
976 goto RET_LABEL73;
977 RET_LABEL73:(void)0;
978 }
979 }
980 var_from = var72;
981 } else {
982 goto BREAK_label79;
983 }
984 }
985 BREAK_label79: (void)0;
986 {
987 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
988 var82 = -1l;
989 var80 = var82;
990 goto RET_LABEL81;
991 RET_LABEL81:(void)0;
992 }
993 }
994 var = var80;
995 goto RET_LABEL;
996 RET_LABEL:;
997 return var;
998 }
999 /* method string_search#Text#search_in for (self: Text, Text, Int): nullable Match */
1000 val* core__string_search___Text___Pattern__search_in(val* self, val* p0, long p1) {
1001 val* var /* : nullable Match */;
1002 val* var_s /* var s: Text */;
1003 long var_from /* var from: Int */;
1004 long var1 /* : Int */;
1005 long var_pos /* var pos: Int */;
1006 short int var2 /* : Bool */;
1007 short int var4 /* : Bool */;
1008 int cltype;
1009 int idtype;
1010 const char* var_class_name;
1011 short int var5 /* : Bool */;
1012 val* var6 /* : Match */;
1013 val* var7 /* : String */;
1014 long var8 /* : Int */;
1015 var_s = p0;
1016 var_from = p1;
1017 {
1018 var1 = core__string_search___Text___Pattern__search_index_in(self, var_s, var_from);
1019 }
1020 var_pos = var1;
1021 {
1022 { /* Inline kernel#Int#< (var_pos,0l) on <var_pos:Int> */
1023 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1024 /* <0l:Int> isa OTHER */
1025 var4 = 1; /* easy <0l:Int> isa OTHER*/
1026 if (unlikely(!var4)) {
1027 var_class_name = type_core__Int.name;
1028 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1029 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1030 fatal_exit(1);
1031 }
1032 var5 = var_pos < 0l;
1033 var2 = var5;
1034 goto RET_LABEL3;
1035 RET_LABEL3:(void)0;
1036 }
1037 }
1038 if (var2){
1039 var = ((val*)NULL);
1040 goto RET_LABEL;
1041 } else {
1042 var6 = NEW_core__Match(&type_core__Match);
1043 {
1044 var7 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_s); /* to_s on <var_s:Text>*/
1045 }
1046 {
1047 var8 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
1048 }
1049 {
1050 ((void(*)(val* self, val* p0))(var6->class->vft[COLOR_core__string_search__Match__string_61d]))(var6, var7); /* string= on <var6:Match>*/
1051 }
1052 {
1053 ((void(*)(val* self, long p0))(var6->class->vft[COLOR_core__string_search__Match__from_61d]))(var6, var_pos); /* from= on <var6:Match>*/
1054 }
1055 {
1056 ((void(*)(val* self, long p0))(var6->class->vft[COLOR_core__string_search__Match__length_61d]))(var6, var8); /* length= on <var6:Match>*/
1057 }
1058 {
1059 ((void(*)(val* self))(var6->class->vft[COLOR_core__kernel__Object__init]))(var6); /* init on <var6:Match>*/
1060 }
1061 var = var6;
1062 goto RET_LABEL;
1063 }
1064 RET_LABEL:;
1065 return var;
1066 }
1067 /* method string_search#Text#split for (self: Text, Pattern): Array[String] */
1068 val* core__string_search___Text___split(val* self, val* p0) {
1069 val* var /* : Array[String] */;
1070 val* var_pattern /* var pattern: Pattern */;
1071 val* var1 /* : Array[Match] */;
1072 val* var_matches /* var matches: Array[Match] */;
1073 val* var2 /* : Array[String] */;
1074 long var3 /* : Int */;
1075 long var5 /* : Int */;
1076 val* var_res /* var res: Array[String] */;
1077 val* var_ /* var : Array[Match] */;
1078 val* var6 /* : IndexedIterator[nullable Object] */;
1079 val* var_7 /* var : IndexedIterator[Match] */;
1080 short int var8 /* : Bool */;
1081 val* var9 /* : nullable Object */;
1082 val* var_m /* var m: Match */;
1083 val* var10 /* : String */;
1084 var_pattern = p0;
1085 {
1086 var1 = core___core__Pattern___split_in(var_pattern, self);
1087 }
1088 var_matches = var1;
1089 var2 = NEW_core__Array(&type_core__Array__core__String);
1090 {
1091 { /* Inline array#AbstractArrayRead#length (var_matches) on <var_matches:Array[Match]> */
1092 var5 = var_matches->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_matches:Array[Match]> */
1093 var3 = var5;
1094 RET_LABEL4:(void)0;
1095 }
1096 }
1097 {
1098 core___core__Array___with_capacity(var2, var3); /* Direct call array#Array#with_capacity on <var2:Array[String]>*/
1099 }
1100 var_res = var2;
1101 var_ = var_matches;
1102 {
1103 var6 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1104 }
1105 var_7 = var6;
1106 for(;;) {
1107 {
1108 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:IndexedIterator[Match]>*/
1109 }
1110 if (var8){
1111 } else {
1112 goto BREAK_label;
1113 }
1114 {
1115 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:IndexedIterator[Match]>*/
1116 }
1117 var_m = var9;
1118 {
1119 var10 = core___core__Match___core__abstract_text__Object__to_s(var_m);
1120 }
1121 {
1122 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var10); /* Direct call array#Array#add on <var_res:Array[String]>*/
1123 }
1124 {
1125 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:IndexedIterator[Match]>*/
1126 }
1127 }
1128 BREAK_label: (void)0;
1129 {
1130 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:IndexedIterator[Match]>*/
1131 }
1132 var = var_res;
1133 goto RET_LABEL;
1134 RET_LABEL:;
1135 return var;
1136 }
1137 /* method string_search#Text#split_with for (self: Text, Pattern): Array[String] */
1138 val* core__string_search___Text___split_with(val* self, val* p0) {
1139 val* var /* : Array[String] */;
1140 val* var_pattern /* var pattern: Pattern */;
1141 val* var1 /* : Array[String] */;
1142 var_pattern = p0;
1143 {
1144 var1 = core__string_search___Text___split(self, var_pattern);
1145 }
1146 var = var1;
1147 goto RET_LABEL;
1148 RET_LABEL:;
1149 return var;
1150 }
1151 /* method string_search#Text#split_once_on for (self: Text, Pattern): Array[Text] */
1152 val* core__string_search___Text___split_once_on(val* self, val* p0) {
1153 val* var /* : Array[Text] */;
1154 val* var_pattern /* var pattern: Pattern */;
1155 val* var1 /* : nullable Match */;
1156 val* var_m /* var m: nullable Match */;
1157 val* var2 /* : Array[Text] */;
1158 val* var_res /* var res: Array[Text] */;
1159 short int var3 /* : Bool */;
1160 short int var4 /* : Bool */;
1161 val* var_other /* var other: nullable Object */;
1162 short int var6 /* : Bool */;
1163 short int var8 /* : Bool */;
1164 short int var9 /* : Bool */;
1165 int cltype;
1166 int idtype;
1167 const struct type* type_struct;
1168 const char* var_class_name;
1169 long var10 /* : Int */;
1170 long var12 /* : Int */;
1171 val* var13 /* : Text */;
1172 long var14 /* : Int */;
1173 val* var15 /* : Text */;
1174 var_pattern = p0;
1175 {
1176 var1 = ((val*(*)(val* self, val* p0, long p1))((((long)var_pattern&3)?class_info[((long)var_pattern&3)]:var_pattern->class)->vft[COLOR_core__string_search__Pattern__search_in]))(var_pattern, self, 0l); /* search_in on <var_pattern:Pattern>*/
1177 }
1178 var_m = var1;
1179 var2 = NEW_core__Array(self->type->resolution_table->types[COLOR_core__Array__core__abstract_text__Text__SELFTYPE]);
1180 {
1181 core___core__Array___core__kernel__Object__init(var2); /* Direct call array#Array#init on <var2:Array[Text]>*/
1182 }
1183 var_res = var2;
1184 if (var_m == NULL) {
1185 var3 = 1; /* is null */
1186 } else {
1187 var3 = 0; /* arg is null but recv is not */
1188 }
1189 if (0) {
1190 { /* Inline kernel#Object#== (var_m,((val*)NULL)) on <var_m:nullable Match> */
1191 var_other = ((val*)NULL);
1192 {
1193 { /* Inline kernel#Object#is_same_instance (var_m,var_other) on <var_m:nullable Match(Match)> */
1194 var8 = var_m == var_other;
1195 var6 = var8;
1196 goto RET_LABEL7;
1197 RET_LABEL7:(void)0;
1198 }
1199 }
1200 var4 = var6;
1201 goto RET_LABEL5;
1202 RET_LABEL5:(void)0;
1203 }
1204 var3 = var4;
1205 }
1206 if (var3){
1207 /* <self:Text> isa SELFTYPE */
1208 type_struct = self->type->resolution_table->types[COLOR_core__abstract_text__Text__SELFTYPE];
1209 cltype = type_struct->color;
1210 idtype = type_struct->id;
1211 if(cltype >= self->type->table_size) {
1212 var9 = 0;
1213 } else {
1214 var9 = self->type->type_table[cltype] == idtype;
1215 }
1216 if (unlikely(!var9)) {
1217 var_class_name = self == NULL ? "null" : self->type->name;
1218 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELFTYPE", var_class_name);
1219 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 465);
1220 fatal_exit(1);
1221 }
1222 {
1223 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, self); /* Direct call array#Array#add on <var_res:Array[Text]>*/
1224 }
1225 } else {
1226 {
1227 { /* Inline string_search#Match#from (var_m) on <var_m:nullable Match(Match)> */
1228 var12 = var_m->attrs[COLOR_core__string_search__Match___from].l; /* _from on <var_m:nullable Match(Match)> */
1229 var10 = var12;
1230 RET_LABEL11:(void)0;
1231 }
1232 }
1233 {
1234 var13 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, 0l, var10); /* substring on <self:Text>*/
1235 }
1236 {
1237 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var13); /* Direct call array#Array#add on <var_res:Array[Text]>*/
1238 }
1239 {
1240 var14 = core___core__Match___after(var_m);
1241 }
1242 {
1243 var15 = ((val*(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text__substring_from]))(self, var14); /* substring_from on <self:Text>*/
1244 }
1245 {
1246 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var15); /* Direct call array#Array#add on <var_res:Array[Text]>*/
1247 }
1248 }
1249 var = var_res;
1250 goto RET_LABEL;
1251 RET_LABEL:;
1252 return var;
1253 }
1254 /* method string_search#Text#replace for (self: Text, Pattern, Text): String */
1255 val* core__string_search___Text___replace(val* self, val* p0, val* p1) {
1256 val* var /* : String */;
1257 short int var1 /* : Bool */;
1258 int cltype;
1259 int idtype;
1260 const struct type* type_struct;
1261 const char* var_class_name;
1262 val* var_pattern /* var pattern: Pattern */;
1263 val* var_string /* var string: Text */;
1264 val* var2 /* : Array[String] */;
1265 val* var3 /* : String */;
1266 /* Covariant cast for argument 1 (string) <p1:Text> isa SELFTYPE */
1267 /* <p1:Text> isa SELFTYPE */
1268 type_struct = self->type->resolution_table->types[COLOR_core__abstract_text__Text__SELFTYPE];
1269 cltype = type_struct->color;
1270 idtype = type_struct->id;
1271 if(cltype >= p1->type->table_size) {
1272 var1 = 0;
1273 } else {
1274 var1 = p1->type->type_table[cltype] == idtype;
1275 }
1276 if (unlikely(!var1)) {
1277 var_class_name = p1 == NULL ? "null" : p1->type->name;
1278 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELFTYPE", var_class_name);
1279 PRINT_ERROR(" (%s:%d)\n", FILE_core__string_search, 473);
1280 fatal_exit(1);
1281 }
1282 var_pattern = p0;
1283 var_string = p1;
1284 {
1285 var2 = core__string_search___Text___split_with(self, var_pattern);
1286 }
1287 {
1288 var3 = core__abstract_text___Collection___join(var2, var_string);
1289 }
1290 var = var3;
1291 goto RET_LABEL;
1292 RET_LABEL:;
1293 return var;
1294 }
1295 /* method string_search#Text#remove_all for (self: Text, Pattern): String */
1296 val* core__string_search___Text___remove_all(val* self, val* p0) {
1297 val* var /* : String */;
1298 val* var_pattern /* var pattern: Pattern */;
1299 val* var1 /* : Array[String] */;
1300 val* var2 /* : String */;
1301 var_pattern = p0;
1302 {
1303 var1 = core__string_search___Text___split(self, var_pattern);
1304 }
1305 {
1306 var2 = core__abstract_text___Collection___join(var1, ((val*)NULL));
1307 }
1308 var = var2;
1309 goto RET_LABEL;
1310 RET_LABEL:;
1311 return var;
1312 }