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