pep8analysis: intro the web interface
[nit.git] / c_src / string_search.sep.1.c
1 #include "string_search.sep.0.h"
2 /* method string_search#Pattern#search_index_in for (self: Pattern, String, Int): Int */
3 long string_search__Pattern__search_index_in(val* self, val* p0, long p1) {
4 long var /* : Int */;
5 const char* var_class_name;
6 var_class_name = self == NULL ? "null" : self->type->name;
7 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "search_index_in", var_class_name);
8 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 20);
9 show_backtrace(1);
10 RET_LABEL:;
11 return var;
12 }
13 /* method string_search#Pattern#search_index_in for (self: Object, String, Int): Int */
14 long VIRTUAL_string_search__Pattern__search_index_in(val* self, val* p0, long p1) {
15 long var /* : Int */;
16 long var1 /* : Int */;
17 var1 = string_search__Pattern__search_index_in(self, p0, p1);
18 var = var1;
19 RET_LABEL:;
20 return var;
21 }
22 /* method string_search#Pattern#search_in for (self: Pattern, String, Int): nullable Match */
23 val* string_search__Pattern__search_in(val* self, val* p0, long p1) {
24 val* var /* : nullable Match */;
25 const char* var_class_name;
26 var_class_name = self == NULL ? "null" : self->type->name;
27 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "search_in", var_class_name);
28 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 25);
29 show_backtrace(1);
30 RET_LABEL:;
31 return var;
32 }
33 /* method string_search#Pattern#search_in for (self: Object, String, Int): nullable Match */
34 val* VIRTUAL_string_search__Pattern__search_in(val* self, val* p0, long p1) {
35 val* var /* : nullable Match */;
36 val* var1 /* : nullable Match */;
37 var1 = string_search__Pattern__search_in(self, p0, p1);
38 var = var1;
39 RET_LABEL:;
40 return var;
41 }
42 /* method string_search#Pattern#search_all_in for (self: Pattern, String): Array[Match] */
43 val* string_search__Pattern__search_all_in(val* self, val* p0) {
44 val* var /* : Array[Match] */;
45 val* var_s /* var s: String */;
46 val* var1 /* : Array[Match] */;
47 val* var_res /* var res: Array[Match] */;
48 long var2 /* : Int */;
49 val* var3 /* : nullable Match */;
50 val* var_match /* var match: nullable Match */;
51 val* var4 /* : null */;
52 short int var5 /* : Bool */;
53 long var6 /* : Int */;
54 val* var7 /* : nullable Match */;
55 var_s = p0;
56 var1 = NEW_array__Array(&type_array__Arraystring_search__Match);
57 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[Match]>*/;
58 var_res = var1;
59 var2 = 0;
60 var3 = ((val* (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_in]))(self, var_s, var2) /* search_in on <self:Pattern>*/;
61 var_match = var3;
62 for(;;) {
63 var4 = NULL;
64 if (var_match == NULL) {
65 var5 = 0; /* is null */
66 } else {
67 var5 = 1; /* arg is null and recv is not */
68 }
69 if (!var5) break;
70 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_match) /* add on <var_res:Array[Match]>*/;
71 var6 = ((long (*)(val*))(var_match->class->vft[COLOR_string_search__Match__after]))(var_match) /* after on <var_match:nullable Match(Match)>*/;
72 var7 = ((val* (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_in]))(self, var_s, var6) /* search_in on <self:Pattern>*/;
73 var_match = var7;
74 CONTINUE_label: (void)0;
75 }
76 BREAK_label: (void)0;
77 var = var_res;
78 goto RET_LABEL;
79 RET_LABEL:;
80 return var;
81 }
82 /* method string_search#Pattern#search_all_in for (self: Object, String): Array[Match] */
83 val* VIRTUAL_string_search__Pattern__search_all_in(val* self, val* p0) {
84 val* var /* : Array[Match] */;
85 val* var1 /* : Array[Match] */;
86 var1 = string_search__Pattern__search_all_in(self, p0);
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method string_search#Pattern#split_in for (self: Pattern, String): Array[Match] */
92 val* string_search__Pattern__split_in(val* self, val* p0) {
93 val* var /* : Array[Match] */;
94 val* var_s /* var s: String */;
95 val* var1 /* : Array[Match] */;
96 val* var_res /* var res: Array[Match] */;
97 long var2 /* : Int */;
98 long var_i /* var i: Int */;
99 long var3 /* : Int */;
100 val* var4 /* : nullable Match */;
101 val* var_match /* var match: nullable Match */;
102 val* var5 /* : null */;
103 short int var6 /* : Bool */;
104 long var7 /* : Int */;
105 long var8 /* : Int */;
106 long var10 /* : Int */;
107 long var_len /* var len: Int */;
108 val* var11 /* : Match */;
109 long var12 /* : Int */;
110 val* var13 /* : nullable Match */;
111 val* var14 /* : Match */;
112 long var15 /* : Int */;
113 long var16 /* : Int */;
114 long var18 /* : Int */;
115 var_s = p0;
116 var1 = NEW_array__Array(&type_array__Arraystring_search__Match);
117 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[Match]>*/;
118 var_res = var1;
119 var2 = 0;
120 var_i = var2;
121 var3 = 0;
122 var4 = ((val* (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_in]))(self, var_s, var3) /* search_in on <self:Pattern>*/;
123 var_match = var4;
124 for(;;) {
125 var5 = NULL;
126 if (var_match == NULL) {
127 var6 = 0; /* is null */
128 } else {
129 var6 = 1; /* arg is null and recv is not */
130 }
131 if (!var6) break;
132 var7 = ((long (*)(val*))(var_match->class->vft[COLOR_string_search__Match__from]))(var_match) /* from on <var_match:nullable Match(Match)>*/;
133 { /* Inline kernel#Int#- (var7,var_i) */
134 var10 = var7 - var_i;
135 var8 = var10;
136 goto RET_LABEL9;
137 RET_LABEL9:(void)0;
138 }
139 var_len = var8;
140 var11 = NEW_string_search__Match(&type_string_search__Match);
141 ((void (*)(val*, val*, long, long))(var11->class->vft[COLOR_string_search__Match__init]))(var11, var_s, var_i, var_len) /* init on <var11:Match>*/;
142 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var11) /* add on <var_res:Array[Match]>*/;
143 var12 = ((long (*)(val*))(var_match->class->vft[COLOR_string_search__Match__after]))(var_match) /* after on <var_match:nullable Match(Match)>*/;
144 var_i = var12;
145 var13 = ((val* (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_in]))(self, var_s, var_i) /* search_in on <self:Pattern>*/;
146 var_match = var13;
147 CONTINUE_label: (void)0;
148 }
149 BREAK_label: (void)0;
150 var14 = NEW_string_search__Match(&type_string_search__Match);
151 var15 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
152 { /* Inline kernel#Int#- (var15,var_i) */
153 var18 = var15 - var_i;
154 var16 = var18;
155 goto RET_LABEL17;
156 RET_LABEL17:(void)0;
157 }
158 ((void (*)(val*, val*, long, long))(var14->class->vft[COLOR_string_search__Match__init]))(var14, var_s, var_i, var16) /* init on <var14:Match>*/;
159 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var14) /* add on <var_res:Array[Match]>*/;
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, String): 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#BM_Pattern#to_s for (self: BM_Pattern): String */
175 val* string_search__BM_Pattern__to_s(val* self) {
176 val* var /* : String */;
177 val* var1 /* : String */;
178 var1 = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
179 if (var1 == NULL) {
180 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
181 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 67);
182 show_backtrace(1);
183 }
184 var = var1;
185 goto RET_LABEL;
186 RET_LABEL:;
187 return var;
188 }
189 /* method string_search#BM_Pattern#to_s for (self: Object): String */
190 val* VIRTUAL_string_search__BM_Pattern__to_s(val* self) {
191 val* var /* : String */;
192 val* var1 /* : String */;
193 var1 = string_search__BM_Pattern__to_s(self);
194 var = var1;
195 RET_LABEL:;
196 return var;
197 }
198 /* method string_search#BM_Pattern#search_index_in for (self: BM_Pattern, String, Int): Int */
199 long string_search__BM_Pattern__search_index_in(val* self, val* p0, long p1) {
200 long var /* : Int */;
201 val* var_s /* var s: String */;
202 long var_from /* var from: Int */;
203 long var1 /* : Int */;
204 short int var2 /* : Bool */;
205 short int var4 /* : Bool */;
206 int cltype;
207 int idtype;
208 const char* var_class_name;
209 short int var5 /* : Bool */;
210 long var6 /* : Int */;
211 long var_n /* var n: Int */;
212 long var7 /* : Int */;
213 long var_m /* var m: Int */;
214 long var_j /* var j: Int */;
215 long var8 /* : Int */;
216 long var10 /* : Int */;
217 long var11 /* : Int */;
218 long var12 /* : Int */;
219 long var14 /* : Int */;
220 short int var15 /* : Bool */;
221 short int var17 /* : Bool */;
222 int cltype18;
223 int idtype19;
224 const char* var_class_name20;
225 short int var21 /* : Bool */;
226 long var22 /* : Int */;
227 long var23 /* : Int */;
228 long var25 /* : Int */;
229 long var_i /* var i: Int */;
230 short int var26 /* : Bool */;
231 long var27 /* : Int */;
232 short int var28 /* : Bool */;
233 short int var30 /* : Bool */;
234 int cltype31;
235 int idtype32;
236 const char* var_class_name33;
237 short int var34 /* : Bool */;
238 short int var_ /* var : Bool */;
239 val* var35 /* : String */;
240 val* var36 /* : StringCharView */;
241 val* var37 /* : nullable Object */;
242 val* var38 /* : StringCharView */;
243 long var39 /* : Int */;
244 long var41 /* : Int */;
245 val* var42 /* : nullable Object */;
246 short int var43 /* : Bool */;
247 short int var45 /* : Bool */;
248 long var46 /* : Int */;
249 long var47 /* : Int */;
250 long var49 /* : Int */;
251 long var50 /* : Int */;
252 short int var51 /* : Bool */;
253 short int var53 /* : Bool */;
254 int cltype54;
255 int idtype55;
256 const char* var_class_name56;
257 short int var57 /* : Bool */;
258 val* var58 /* : Array[Int] */;
259 val* var59 /* : nullable Object */;
260 long var60 /* : Int */;
261 long var_gs /* var gs: Int */;
262 val* var61 /* : StringCharView */;
263 long var62 /* : Int */;
264 long var64 /* : Int */;
265 val* var65 /* : nullable Object */;
266 long var66 /* : Int */;
267 char var67 /* : Char */;
268 long var68 /* : Int */;
269 long var70 /* : Int */;
270 long var71 /* : Int */;
271 long var72 /* : Int */;
272 long var74 /* : Int */;
273 long var75 /* : Int */;
274 long var77 /* : Int */;
275 long var_bc /* var bc: Int */;
276 short int var78 /* : Bool */;
277 short int var80 /* : Bool */;
278 int cltype81;
279 int idtype82;
280 const char* var_class_name83;
281 short int var84 /* : Bool */;
282 long var85 /* : Int */;
283 long var87 /* : Int */;
284 long var88 /* : Int */;
285 long var90 /* : Int */;
286 long var92 /* : Int */;
287 long var93 /* : Int */;
288 long var95 /* : Int */;
289 var_s = p0;
290 var_from = p1;
291 var1 = 0;
292 { /* Inline kernel#Int#>= (var_from,var1) */
293 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
294 /* <var1:Int> isa OTHER */
295 var4 = 1; /* easy <var1:Int> isa OTHER*/
296 if (!var4) {
297 var_class_name = type_kernel__Int.name;
298 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
299 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
300 show_backtrace(1);
301 }
302 var5 = var_from >= var1;
303 var2 = var5;
304 goto RET_LABEL3;
305 RET_LABEL3:(void)0;
306 }
307 if (!var2) {
308 fprintf(stderr, "Runtime error: %s", "Assert failed");
309 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 72);
310 show_backtrace(1);
311 }
312 var6 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
313 var_n = var6;
314 var7 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
315 var_m = var7;
316 var_j = var_from;
317 for(;;) {
318 { /* Inline kernel#Int#- (var_n,var_m) */
319 var10 = var_n - var_m;
320 var8 = var10;
321 goto RET_LABEL9;
322 RET_LABEL9:(void)0;
323 }
324 var11 = 1;
325 { /* Inline kernel#Int#+ (var8,var11) */
326 var14 = var8 + var11;
327 var12 = var14;
328 goto RET_LABEL13;
329 RET_LABEL13:(void)0;
330 }
331 { /* Inline kernel#Int#< (var_j,var12) */
332 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
333 /* <var12:Int> isa OTHER */
334 var17 = 1; /* easy <var12:Int> isa OTHER*/
335 if (!var17) {
336 var_class_name20 = type_kernel__Int.name;
337 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
338 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
339 show_backtrace(1);
340 }
341 var21 = var_j < var12;
342 var15 = var21;
343 goto RET_LABEL16;
344 RET_LABEL16:(void)0;
345 }
346 if (!var15) break;
347 var22 = 1;
348 { /* Inline kernel#Int#- (var_m,var22) */
349 var25 = var_m - var22;
350 var23 = var25;
351 goto RET_LABEL24;
352 RET_LABEL24:(void)0;
353 }
354 var_i = var23;
355 for(;;) {
356 var27 = 0;
357 { /* Inline kernel#Int#>= (var_i,var27) */
358 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
359 /* <var27:Int> isa OTHER */
360 var30 = 1; /* easy <var27:Int> isa OTHER*/
361 if (!var30) {
362 var_class_name33 = type_kernel__Int.name;
363 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
364 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
365 show_backtrace(1);
366 }
367 var34 = var_i >= var27;
368 var28 = var34;
369 goto RET_LABEL29;
370 RET_LABEL29:(void)0;
371 }
372 var_ = var28;
373 if (var28){
374 var35 = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
375 if (var35 == NULL) {
376 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
377 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 79);
378 show_backtrace(1);
379 }
380 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_string__AbstractString__chars]))(var35) /* chars on <var35:String>*/;
381 var37 = ((val* (*)(val*, long))(var36->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var36, var_i) /* [] on <var36:StringCharView>*/;
382 var38 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__chars]))(var_s) /* chars on <var_s:String>*/;
383 { /* Inline kernel#Int#+ (var_i,var_j) */
384 var41 = var_i + var_j;
385 var39 = var41;
386 goto RET_LABEL40;
387 RET_LABEL40:(void)0;
388 }
389 var42 = ((val* (*)(val*, long))(var38->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var38, var39) /* [] on <var38:StringCharView>*/;
390 { /* Inline kernel#Char#== (var37,var42) */
391 var45 = var37 == var42 || (((struct instance_kernel__Char*)var37)->value == ((struct instance_kernel__Char*)var42)->value);
392 var43 = var45;
393 goto RET_LABEL44;
394 RET_LABEL44:(void)0;
395 }
396 var26 = var43;
397 } else {
398 var26 = var_;
399 }
400 if (!var26) break;
401 var46 = 1;
402 { /* Inline kernel#Int#- (var_i,var46) */
403 var49 = var_i - var46;
404 var47 = var49;
405 goto RET_LABEL48;
406 RET_LABEL48:(void)0;
407 }
408 var_i = var47;
409 CONTINUE_label: (void)0;
410 }
411 BREAK_label: (void)0;
412 var50 = 0;
413 { /* Inline kernel#Int#< (var_i,var50) */
414 /* Covariant cast for argument 0 (i) <var50:Int> isa OTHER */
415 /* <var50:Int> isa OTHER */
416 var53 = 1; /* easy <var50:Int> isa OTHER*/
417 if (!var53) {
418 var_class_name56 = type_kernel__Int.name;
419 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name56);
420 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
421 show_backtrace(1);
422 }
423 var57 = var_i < var50;
424 var51 = var57;
425 goto RET_LABEL52;
426 RET_LABEL52:(void)0;
427 }
428 if (var51){
429 var = var_j;
430 goto RET_LABEL;
431 } else {
432 var58 = self->attrs[COLOR_string_search__BM_Pattern___gs].val; /* _gs on <self:BM_Pattern> */
433 if (var58 == NULL) {
434 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _gs");
435 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 83);
436 show_backtrace(1);
437 }
438 var59 = ((val* (*)(val*, long))(var58->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var58, var_i) /* [] on <var58:Array[Int]>*/;
439 var60 = ((struct instance_kernel__Int*)var59)->value; /* autounbox from nullable Object to Int */;
440 var_gs = var60;
441 var61 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__chars]))(var_s) /* chars on <var_s:String>*/;
442 { /* Inline kernel#Int#+ (var_i,var_j) */
443 var64 = var_i + var_j;
444 var62 = var64;
445 goto RET_LABEL63;
446 RET_LABEL63:(void)0;
447 }
448 var65 = ((val* (*)(val*, long))(var61->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var61, var62) /* [] on <var61:StringCharView>*/;
449 var67 = ((struct instance_kernel__Char*)var65)->value; /* autounbox from nullable Object to Char */;
450 var66 = ((long (*)(val*, char))(self->class->vft[COLOR_string_search__BM_Pattern__bc]))(self, var67) /* bc on <self:BM_Pattern>*/;
451 { /* Inline kernel#Int#- (var66,var_m) */
452 var70 = var66 - var_m;
453 var68 = var70;
454 goto RET_LABEL69;
455 RET_LABEL69:(void)0;
456 }
457 var71 = 1;
458 { /* Inline kernel#Int#+ (var68,var71) */
459 var74 = var68 + var71;
460 var72 = var74;
461 goto RET_LABEL73;
462 RET_LABEL73:(void)0;
463 }
464 { /* Inline kernel#Int#+ (var72,var_i) */
465 var77 = var72 + var_i;
466 var75 = var77;
467 goto RET_LABEL76;
468 RET_LABEL76:(void)0;
469 }
470 var_bc = var75;
471 { /* Inline kernel#Int#> (var_gs,var_bc) */
472 /* Covariant cast for argument 0 (i) <var_bc:Int> isa OTHER */
473 /* <var_bc:Int> isa OTHER */
474 var80 = 1; /* easy <var_bc:Int> isa OTHER*/
475 if (!var80) {
476 var_class_name83 = type_kernel__Int.name;
477 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name83);
478 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
479 show_backtrace(1);
480 }
481 var84 = var_gs > var_bc;
482 var78 = var84;
483 goto RET_LABEL79;
484 RET_LABEL79:(void)0;
485 }
486 if (var78){
487 { /* Inline kernel#Int#+ (var_j,var_gs) */
488 var87 = var_j + var_gs;
489 var85 = var87;
490 goto RET_LABEL86;
491 RET_LABEL86:(void)0;
492 }
493 var_j = var85;
494 } else {
495 { /* Inline kernel#Int#+ (var_j,var_bc) */
496 var90 = var_j + var_bc;
497 var88 = var90;
498 goto RET_LABEL89;
499 RET_LABEL89:(void)0;
500 }
501 var_j = var88;
502 }
503 }
504 CONTINUE_label91: (void)0;
505 }
506 BREAK_label91: (void)0;
507 var92 = 1;
508 { /* Inline kernel#Int#unary - (var92) */
509 var95 = -var92;
510 var93 = var95;
511 goto RET_LABEL94;
512 RET_LABEL94:(void)0;
513 }
514 var = var93;
515 goto RET_LABEL;
516 RET_LABEL:;
517 return var;
518 }
519 /* method string_search#BM_Pattern#search_index_in for (self: Object, String, Int): Int */
520 long VIRTUAL_string_search__BM_Pattern__search_index_in(val* self, val* p0, long p1) {
521 long var /* : Int */;
522 long var1 /* : Int */;
523 var1 = string_search__BM_Pattern__search_index_in(self, p0, p1);
524 var = var1;
525 RET_LABEL:;
526 return var;
527 }
528 /* method string_search#BM_Pattern#search_in for (self: BM_Pattern, String, Int): nullable Match */
529 val* string_search__BM_Pattern__search_in(val* self, val* p0, long p1) {
530 val* var /* : nullable Match */;
531 val* var_s /* var s: String */;
532 long var_from /* var from: Int */;
533 long var1 /* : Int */;
534 long var_to /* var to: Int */;
535 long var2 /* : Int */;
536 short int var3 /* : Bool */;
537 short int var5 /* : Bool */;
538 int cltype;
539 int idtype;
540 const char* var_class_name;
541 short int var6 /* : Bool */;
542 val* var7 /* : null */;
543 val* var8 /* : Match */;
544 long var9 /* : Int */;
545 var_s = p0;
546 var_from = p1;
547 var1 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_index_in]))(self, var_s, var_from) /* search_index_in on <self:BM_Pattern>*/;
548 var_to = var1;
549 var2 = 0;
550 { /* Inline kernel#Int#< (var_to,var2) */
551 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
552 /* <var2:Int> isa OTHER */
553 var5 = 1; /* easy <var2:Int> isa OTHER*/
554 if (!var5) {
555 var_class_name = type_kernel__Int.name;
556 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
557 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
558 show_backtrace(1);
559 }
560 var6 = var_to < var2;
561 var3 = var6;
562 goto RET_LABEL4;
563 RET_LABEL4:(void)0;
564 }
565 if (var3){
566 var7 = NULL;
567 var = var7;
568 goto RET_LABEL;
569 } else {
570 var8 = NEW_string_search__Match(&type_string_search__Match);
571 var9 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
572 ((void (*)(val*, val*, long, long))(var8->class->vft[COLOR_string_search__Match__init]))(var8, var_s, var_to, var9) /* init on <var8:Match>*/;
573 var = var8;
574 goto RET_LABEL;
575 }
576 RET_LABEL:;
577 return var;
578 }
579 /* method string_search#BM_Pattern#search_in for (self: Object, String, Int): nullable Match */
580 val* VIRTUAL_string_search__BM_Pattern__search_in(val* self, val* p0, long p1) {
581 val* var /* : nullable Match */;
582 val* var1 /* : nullable Match */;
583 var1 = string_search__BM_Pattern__search_in(self, p0, p1);
584 var = var1;
585 RET_LABEL:;
586 return var;
587 }
588 /* method string_search#BM_Pattern#init for (self: BM_Pattern, String) */
589 void string_search__BM_Pattern__init(val* self, val* p0) {
590 val* var_motif /* var motif: String */;
591 long var /* : Int */;
592 val* var1 /* : Array[Int] */;
593 long var2 /* : Int */;
594 val* var3 /* : ArrayMap[Char, Int] */;
595 var_motif = p0;
596 self->attrs[COLOR_string_search__BM_Pattern___motif].val = var_motif; /* _motif on <self:BM_Pattern> */
597 var = ((long (*)(val*))(var_motif->class->vft[COLOR_abstract_collection__Collection__length]))(var_motif) /* length on <var_motif:String>*/;
598 self->attrs[COLOR_string_search__BM_Pattern___length].l = var; /* _length on <self:BM_Pattern> */
599 var1 = NEW_array__Array(&type_array__Arraykernel__Int);
600 var2 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
601 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Int]>*/;
602 self->attrs[COLOR_string_search__BM_Pattern___gs].val = var1; /* _gs on <self:BM_Pattern> */
603 var3 = NEW_array__ArrayMap(&type_array__ArrayMapkernel__Charkernel__Int);
604 ((void (*)(val*))(var3->class->vft[COLOR_array__ArrayMap__init]))(var3) /* init on <var3:ArrayMap[Char, Int]>*/;
605 self->attrs[COLOR_string_search__BM_Pattern___bc_table].val = var3; /* _bc_table on <self:BM_Pattern> */
606 ((void (*)(val*))(self->class->vft[COLOR_string_search__BM_Pattern__compute_gs]))(self) /* compute_gs on <self:BM_Pattern>*/;
607 ((void (*)(val*))(self->class->vft[COLOR_string_search__BM_Pattern__compute_bc]))(self) /* compute_bc on <self:BM_Pattern>*/;
608 RET_LABEL:;
609 }
610 /* method string_search#BM_Pattern#init for (self: Object, String) */
611 void VIRTUAL_string_search__BM_Pattern__init(val* self, val* p0) {
612 string_search__BM_Pattern__init(self, p0);
613 RET_LABEL:;
614 }
615 /* method string_search#BM_Pattern#bc for (self: BM_Pattern, Char): Int */
616 long string_search__BM_Pattern__bc(val* self, char p0) {
617 long var /* : Int */;
618 char var_e /* var e: Char */;
619 val* var1 /* : Map[Char, Int] */;
620 short int var2 /* : Bool */;
621 val* var3 /* : Object */;
622 val* var4 /* : Map[Char, Int] */;
623 val* var5 /* : nullable Object */;
624 val* var6 /* : Object */;
625 long var7 /* : Int */;
626 long var8 /* : Int */;
627 var_e = p0;
628 var1 = self->attrs[COLOR_string_search__BM_Pattern___bc_table].val; /* _bc_table on <self:BM_Pattern> */
629 if (var1 == NULL) {
630 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _bc_table");
631 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 126);
632 show_backtrace(1);
633 }
634 var3 = BOX_kernel__Char(var_e); /* autobox from Char to Object */
635 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var3) /* has_key on <var1:Map[Char, Int]>*/;
636 if (var2){
637 var4 = self->attrs[COLOR_string_search__BM_Pattern___bc_table].val; /* _bc_table on <self:BM_Pattern> */
638 if (var4 == NULL) {
639 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _bc_table");
640 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 127);
641 show_backtrace(1);
642 }
643 var6 = BOX_kernel__Char(var_e); /* autobox from Char to Object */
644 var5 = ((val* (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var4, var6) /* [] on <var4:Map[Char, Int]>*/;
645 var7 = ((struct instance_kernel__Int*)var5)->value; /* autounbox from nullable Object to Int */;
646 var = var7;
647 goto RET_LABEL;
648 } else {
649 var8 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
650 var = var8;
651 goto RET_LABEL;
652 }
653 RET_LABEL:;
654 return var;
655 }
656 /* method string_search#BM_Pattern#bc for (self: Object, Char): Int */
657 long VIRTUAL_string_search__BM_Pattern__bc(val* self, char p0) {
658 long var /* : Int */;
659 long var1 /* : Int */;
660 var1 = string_search__BM_Pattern__bc(self, p0);
661 var = var1;
662 RET_LABEL:;
663 return var;
664 }
665 /* method string_search#BM_Pattern#compute_bc for (self: BM_Pattern) */
666 void string_search__BM_Pattern__compute_bc(val* self) {
667 val* var /* : String */;
668 val* var_x /* var x: String */;
669 long var1 /* : Int */;
670 long var_m /* var m: Int */;
671 long var2 /* : Int */;
672 long var_i /* var i: Int */;
673 long var3 /* : Int */;
674 long var4 /* : Int */;
675 long var6 /* : Int */;
676 short int var7 /* : Bool */;
677 short int var9 /* : Bool */;
678 int cltype;
679 int idtype;
680 const char* var_class_name;
681 short int var10 /* : Bool */;
682 val* var11 /* : Map[Char, Int] */;
683 val* var12 /* : StringCharView */;
684 val* var13 /* : nullable Object */;
685 long var14 /* : Int */;
686 long var16 /* : Int */;
687 long var17 /* : Int */;
688 long var18 /* : Int */;
689 long var20 /* : Int */;
690 val* var21 /* : nullable Object */;
691 long var22 /* : Int */;
692 long var23 /* : Int */;
693 long var25 /* : Int */;
694 var = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
695 if (var == NULL) {
696 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
697 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 141);
698 show_backtrace(1);
699 }
700 var_x = var;
701 var1 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
702 var_m = var1;
703 var2 = 0;
704 var_i = var2;
705 for(;;) {
706 var3 = 1;
707 { /* Inline kernel#Int#- (var_m,var3) */
708 var6 = var_m - var3;
709 var4 = var6;
710 goto RET_LABEL5;
711 RET_LABEL5:(void)0;
712 }
713 { /* Inline kernel#Int#< (var_i,var4) */
714 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
715 /* <var4:Int> isa OTHER */
716 var9 = 1; /* easy <var4:Int> isa OTHER*/
717 if (!var9) {
718 var_class_name = type_kernel__Int.name;
719 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
720 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
721 show_backtrace(1);
722 }
723 var10 = var_i < var4;
724 var7 = var10;
725 goto RET_LABEL8;
726 RET_LABEL8:(void)0;
727 }
728 if (!var7) break;
729 var11 = self->attrs[COLOR_string_search__BM_Pattern___bc_table].val; /* _bc_table on <self:BM_Pattern> */
730 if (var11 == NULL) {
731 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _bc_table");
732 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 145);
733 show_backtrace(1);
734 }
735 var12 = ((val* (*)(val*))(var_x->class->vft[COLOR_string__AbstractString__chars]))(var_x) /* chars on <var_x:String>*/;
736 var13 = ((val* (*)(val*, long))(var12->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var12, var_i) /* [] on <var12:StringCharView>*/;
737 { /* Inline kernel#Int#- (var_m,var_i) */
738 var16 = var_m - var_i;
739 var14 = var16;
740 goto RET_LABEL15;
741 RET_LABEL15:(void)0;
742 }
743 var17 = 1;
744 { /* Inline kernel#Int#- (var14,var17) */
745 var20 = var14 - var17;
746 var18 = var20;
747 goto RET_LABEL19;
748 RET_LABEL19:(void)0;
749 }
750 var21 = BOX_kernel__Int(var18); /* autobox from Int to nullable Object */
751 ((void (*)(val*, val*, val*))(var11->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var11, var13, var21) /* []= on <var11:Map[Char, Int]>*/;
752 var22 = 1;
753 { /* Inline kernel#Int#+ (var_i,var22) */
754 var25 = var_i + var22;
755 var23 = var25;
756 goto RET_LABEL24;
757 RET_LABEL24:(void)0;
758 }
759 var_i = var23;
760 CONTINUE_label: (void)0;
761 }
762 BREAK_label: (void)0;
763 RET_LABEL:;
764 }
765 /* method string_search#BM_Pattern#compute_bc for (self: Object) */
766 void VIRTUAL_string_search__BM_Pattern__compute_bc(val* self) {
767 string_search__BM_Pattern__compute_bc(self);
768 RET_LABEL:;
769 }
770 /* method string_search#BM_Pattern#suffixes for (self: BM_Pattern): Array[Int] */
771 val* string_search__BM_Pattern__suffixes(val* self) {
772 val* var /* : Array[Int] */;
773 val* var1 /* : String */;
774 val* var_x /* var x: String */;
775 long var2 /* : Int */;
776 long var_m /* var m: Int */;
777 val* var3 /* : Array[Int] */;
778 val* var4 /* : nullable Object */;
779 val* var_suff /* var suff: Array[Int] */;
780 long var5 /* : Int */;
781 long var_f /* var f: Int */;
782 long var6 /* : Int */;
783 long var7 /* : Int */;
784 long var9 /* : Int */;
785 long var_g /* var g: Int */;
786 long var10 /* : Int */;
787 long var11 /* : Int */;
788 long var13 /* : Int */;
789 long var_i /* var i: Int */;
790 long var14 /* : Int */;
791 short int var15 /* : Bool */;
792 short int var17 /* : Bool */;
793 int cltype;
794 int idtype;
795 const char* var_class_name;
796 short int var18 /* : Bool */;
797 short int var19 /* : Bool */;
798 short int var20 /* : Bool */;
799 short int var22 /* : Bool */;
800 int cltype23;
801 int idtype24;
802 const char* var_class_name25;
803 short int var26 /* : Bool */;
804 short int var_ /* var : Bool */;
805 long var27 /* : Int */;
806 long var29 /* : Int */;
807 long var30 /* : Int */;
808 long var31 /* : Int */;
809 long var33 /* : Int */;
810 long var34 /* : Int */;
811 long var36 /* : Int */;
812 val* var37 /* : nullable Object */;
813 long var38 /* : Int */;
814 long var40 /* : Int */;
815 short int var41 /* : Bool */;
816 short int var43 /* : Bool */;
817 int cltype44;
818 int idtype45;
819 const char* var_class_name46;
820 long var47 /* : Int */;
821 short int var48 /* : Bool */;
822 long var49 /* : Int */;
823 long var51 /* : Int */;
824 long var52 /* : Int */;
825 long var53 /* : Int */;
826 long var55 /* : Int */;
827 long var56 /* : Int */;
828 long var58 /* : Int */;
829 val* var59 /* : nullable Object */;
830 short int var60 /* : Bool */;
831 short int var62 /* : Bool */;
832 int cltype63;
833 int idtype64;
834 const char* var_class_name65;
835 short int var66 /* : Bool */;
836 short int var67 /* : Bool */;
837 long var68 /* : Int */;
838 short int var69 /* : Bool */;
839 short int var71 /* : Bool */;
840 int cltype72;
841 int idtype73;
842 const char* var_class_name74;
843 short int var75 /* : Bool */;
844 short int var_76 /* var : Bool */;
845 val* var77 /* : StringCharView */;
846 val* var78 /* : nullable Object */;
847 val* var79 /* : StringCharView */;
848 long var80 /* : Int */;
849 long var82 /* : Int */;
850 long var83 /* : Int */;
851 long var84 /* : Int */;
852 long var86 /* : Int */;
853 long var87 /* : Int */;
854 long var89 /* : Int */;
855 val* var90 /* : nullable Object */;
856 short int var91 /* : Bool */;
857 short int var93 /* : Bool */;
858 long var94 /* : Int */;
859 long var95 /* : Int */;
860 long var97 /* : Int */;
861 long var98 /* : Int */;
862 long var100 /* : Int */;
863 val* var101 /* : nullable Object */;
864 long var102 /* : Int */;
865 long var103 /* : Int */;
866 long var105 /* : Int */;
867 var1 = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
868 if (var1 == NULL) {
869 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
870 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 152);
871 show_backtrace(1);
872 }
873 var_x = var1;
874 var2 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
875 var_m = var2;
876 var3 = NEW_array__Array(&type_array__Arraykernel__Int);
877 var4 = BOX_kernel__Int(var_m); /* autobox from Int to nullable Object */
878 ((void (*)(val*, val*, long))(var3->class->vft[COLOR_array__Array__filled_with]))(var3, var4, var_m) /* filled_with on <var3:Array[Int]>*/;
879 var_suff = var3;
880 var5 = 0;
881 var_f = var5;
882 var6 = 1;
883 { /* Inline kernel#Int#- (var_m,var6) */
884 var9 = var_m - var6;
885 var7 = var9;
886 goto RET_LABEL8;
887 RET_LABEL8:(void)0;
888 }
889 var_g = var7;
890 var10 = 2;
891 { /* Inline kernel#Int#- (var_m,var10) */
892 var13 = var_m - var10;
893 var11 = var13;
894 goto RET_LABEL12;
895 RET_LABEL12:(void)0;
896 }
897 var_i = var11;
898 for(;;) {
899 var14 = 0;
900 { /* Inline kernel#Int#>= (var_i,var14) */
901 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
902 /* <var14:Int> isa OTHER */
903 var17 = 1; /* easy <var14:Int> isa OTHER*/
904 if (!var17) {
905 var_class_name = type_kernel__Int.name;
906 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
907 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
908 show_backtrace(1);
909 }
910 var18 = var_i >= var14;
911 var15 = var18;
912 goto RET_LABEL16;
913 RET_LABEL16:(void)0;
914 }
915 if (!var15) break;
916 { /* Inline kernel#Int#> (var_i,var_g) */
917 /* Covariant cast for argument 0 (i) <var_g:Int> isa OTHER */
918 /* <var_g:Int> isa OTHER */
919 var22 = 1; /* easy <var_g:Int> isa OTHER*/
920 if (!var22) {
921 var_class_name25 = type_kernel__Int.name;
922 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
923 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
924 show_backtrace(1);
925 }
926 var26 = var_i > var_g;
927 var20 = var26;
928 goto RET_LABEL21;
929 RET_LABEL21:(void)0;
930 }
931 var_ = var20;
932 if (var20){
933 { /* Inline kernel#Int#+ (var_i,var_m) */
934 var29 = var_i + var_m;
935 var27 = var29;
936 goto RET_LABEL28;
937 RET_LABEL28:(void)0;
938 }
939 var30 = 1;
940 { /* Inline kernel#Int#- (var27,var30) */
941 var33 = var27 - var30;
942 var31 = var33;
943 goto RET_LABEL32;
944 RET_LABEL32:(void)0;
945 }
946 { /* Inline kernel#Int#- (var31,var_f) */
947 var36 = var31 - var_f;
948 var34 = var36;
949 goto RET_LABEL35;
950 RET_LABEL35:(void)0;
951 }
952 var37 = ((val* (*)(val*, long))(var_suff->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_suff, var34) /* [] on <var_suff:Array[Int]>*/;
953 { /* Inline kernel#Int#- (var_i,var_g) */
954 var40 = var_i - var_g;
955 var38 = var40;
956 goto RET_LABEL39;
957 RET_LABEL39:(void)0;
958 }
959 { /* Inline kernel#Int#< (var37,var38) */
960 /* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
961 /* <var38:Int> isa OTHER */
962 var43 = 1; /* easy <var38:Int> isa OTHER*/
963 if (!var43) {
964 var_class_name46 = type_kernel__Int.name;
965 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name46);
966 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
967 show_backtrace(1);
968 }
969 var47 = ((struct instance_kernel__Int*)var37)->value; /* autounbox from nullable Object to Int */;
970 var48 = var47 < var38;
971 var41 = var48;
972 goto RET_LABEL42;
973 RET_LABEL42:(void)0;
974 }
975 var19 = var41;
976 } else {
977 var19 = var_;
978 }
979 if (var19){
980 { /* Inline kernel#Int#+ (var_i,var_m) */
981 var51 = var_i + var_m;
982 var49 = var51;
983 goto RET_LABEL50;
984 RET_LABEL50:(void)0;
985 }
986 var52 = 1;
987 { /* Inline kernel#Int#- (var49,var52) */
988 var55 = var49 - var52;
989 var53 = var55;
990 goto RET_LABEL54;
991 RET_LABEL54:(void)0;
992 }
993 { /* Inline kernel#Int#- (var53,var_f) */
994 var58 = var53 - var_f;
995 var56 = var58;
996 goto RET_LABEL57;
997 RET_LABEL57:(void)0;
998 }
999 var59 = ((val* (*)(val*, long))(var_suff->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_suff, var56) /* [] on <var_suff:Array[Int]>*/;
1000 ((void (*)(val*, long, val*))(var_suff->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_suff, var_i, var59) /* []= on <var_suff:Array[Int]>*/;
1001 } else {
1002 { /* Inline kernel#Int#< (var_i,var_g) */
1003 /* Covariant cast for argument 0 (i) <var_g:Int> isa OTHER */
1004 /* <var_g:Int> isa OTHER */
1005 var62 = 1; /* easy <var_g:Int> isa OTHER*/
1006 if (!var62) {
1007 var_class_name65 = type_kernel__Int.name;
1008 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
1009 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1010 show_backtrace(1);
1011 }
1012 var66 = var_i < var_g;
1013 var60 = var66;
1014 goto RET_LABEL61;
1015 RET_LABEL61:(void)0;
1016 }
1017 if (var60){
1018 var_g = var_i;
1019 } else {
1020 }
1021 var_f = var_i;
1022 for(;;) {
1023 var68 = 0;
1024 { /* Inline kernel#Int#>= (var_g,var68) */
1025 /* Covariant cast for argument 0 (i) <var68:Int> isa OTHER */
1026 /* <var68:Int> isa OTHER */
1027 var71 = 1; /* easy <var68:Int> isa OTHER*/
1028 if (!var71) {
1029 var_class_name74 = type_kernel__Int.name;
1030 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74);
1031 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1032 show_backtrace(1);
1033 }
1034 var75 = var_g >= var68;
1035 var69 = var75;
1036 goto RET_LABEL70;
1037 RET_LABEL70:(void)0;
1038 }
1039 var_76 = var69;
1040 if (var69){
1041 var77 = ((val* (*)(val*))(var_x->class->vft[COLOR_string__AbstractString__chars]))(var_x) /* chars on <var_x:String>*/;
1042 var78 = ((val* (*)(val*, long))(var77->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var77, var_g) /* [] on <var77:StringCharView>*/;
1043 var79 = ((val* (*)(val*))(var_x->class->vft[COLOR_string__AbstractString__chars]))(var_x) /* chars on <var_x:String>*/;
1044 { /* Inline kernel#Int#+ (var_g,var_m) */
1045 var82 = var_g + var_m;
1046 var80 = var82;
1047 goto RET_LABEL81;
1048 RET_LABEL81:(void)0;
1049 }
1050 var83 = 1;
1051 { /* Inline kernel#Int#- (var80,var83) */
1052 var86 = var80 - var83;
1053 var84 = var86;
1054 goto RET_LABEL85;
1055 RET_LABEL85:(void)0;
1056 }
1057 { /* Inline kernel#Int#- (var84,var_f) */
1058 var89 = var84 - var_f;
1059 var87 = var89;
1060 goto RET_LABEL88;
1061 RET_LABEL88:(void)0;
1062 }
1063 var90 = ((val* (*)(val*, long))(var79->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var79, var87) /* [] on <var79:StringCharView>*/;
1064 { /* Inline kernel#Char#== (var78,var90) */
1065 var93 = var78 == var90 || (((struct instance_kernel__Char*)var78)->value == ((struct instance_kernel__Char*)var90)->value);
1066 var91 = var93;
1067 goto RET_LABEL92;
1068 RET_LABEL92:(void)0;
1069 }
1070 var67 = var91;
1071 } else {
1072 var67 = var_76;
1073 }
1074 if (!var67) break;
1075 var94 = 1;
1076 { /* Inline kernel#Int#- (var_g,var94) */
1077 var97 = var_g - var94;
1078 var95 = var97;
1079 goto RET_LABEL96;
1080 RET_LABEL96:(void)0;
1081 }
1082 var_g = var95;
1083 CONTINUE_label: (void)0;
1084 }
1085 BREAK_label: (void)0;
1086 { /* Inline kernel#Int#- (var_f,var_g) */
1087 var100 = var_f - var_g;
1088 var98 = var100;
1089 goto RET_LABEL99;
1090 RET_LABEL99:(void)0;
1091 }
1092 var101 = BOX_kernel__Int(var98); /* autobox from Int to nullable Object */
1093 ((void (*)(val*, long, val*))(var_suff->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_suff, var_i, var101) /* []= on <var_suff:Array[Int]>*/;
1094 }
1095 var102 = 1;
1096 { /* Inline kernel#Int#- (var_i,var102) */
1097 var105 = var_i - var102;
1098 var103 = var105;
1099 goto RET_LABEL104;
1100 RET_LABEL104:(void)0;
1101 }
1102 var_i = var103;
1103 CONTINUE_label106: (void)0;
1104 }
1105 BREAK_label106: (void)0;
1106 var = var_suff;
1107 goto RET_LABEL;
1108 RET_LABEL:;
1109 return var;
1110 }
1111 /* method string_search#BM_Pattern#suffixes for (self: Object): Array[Int] */
1112 val* VIRTUAL_string_search__BM_Pattern__suffixes(val* self) {
1113 val* var /* : Array[Int] */;
1114 val* var1 /* : Array[Int] */;
1115 var1 = string_search__BM_Pattern__suffixes(self);
1116 var = var1;
1117 RET_LABEL:;
1118 return var;
1119 }
1120 /* method string_search#BM_Pattern#compute_gs for (self: BM_Pattern) */
1121 void string_search__BM_Pattern__compute_gs(val* self) {
1122 val* var /* : String */;
1123 val* var_x /* var x: String */;
1124 long var1 /* : Int */;
1125 long var_m /* var m: Int */;
1126 val* var2 /* : Array[Int] */;
1127 val* var_suff /* var suff: Array[Int] */;
1128 long var3 /* : Int */;
1129 long var_i /* var i: Int */;
1130 short int var4 /* : Bool */;
1131 short int var6 /* : Bool */;
1132 int cltype;
1133 int idtype;
1134 const char* var_class_name;
1135 short int var7 /* : Bool */;
1136 val* var8 /* : Array[Int] */;
1137 val* var9 /* : nullable Object */;
1138 long var10 /* : Int */;
1139 long var11 /* : Int */;
1140 long var13 /* : Int */;
1141 long var14 /* : Int */;
1142 long var_j /* var j: Int */;
1143 long var15 /* : Int */;
1144 long var16 /* : Int */;
1145 long var18 /* : Int */;
1146 long var19 /* : Int */;
1147 long var20 /* : Int */;
1148 long var22 /* : Int */;
1149 short int var23 /* : Bool */;
1150 short int var25 /* : Bool */;
1151 int cltype26;
1152 int idtype27;
1153 const char* var_class_name28;
1154 short int var29 /* : Bool */;
1155 short int var30 /* : Bool */;
1156 long var31 /* : Int */;
1157 long var32 /* : Int */;
1158 long var34 /* : Int */;
1159 short int var35 /* : Bool */;
1160 short int var37 /* : Bool */;
1161 short int var_ /* var : Bool */;
1162 val* var38 /* : nullable Object */;
1163 long var39 /* : Int */;
1164 long var40 /* : Int */;
1165 long var42 /* : Int */;
1166 short int var43 /* : Bool */;
1167 short int var45 /* : Bool */;
1168 long var46 /* : Int */;
1169 long var47 /* : Int */;
1170 long var48 /* : Int */;
1171 long var50 /* : Int */;
1172 long var51 /* : Int */;
1173 long var53 /* : Int */;
1174 short int var54 /* : Bool */;
1175 short int var56 /* : Bool */;
1176 int cltype57;
1177 int idtype58;
1178 const char* var_class_name59;
1179 short int var60 /* : Bool */;
1180 val* var61 /* : Array[Int] */;
1181 val* var62 /* : nullable Object */;
1182 short int var63 /* : Bool */;
1183 short int var65 /* : Bool */;
1184 long var66 /* : Int */;
1185 val* var67 /* : Array[Int] */;
1186 long var68 /* : Int */;
1187 long var69 /* : Int */;
1188 long var71 /* : Int */;
1189 long var72 /* : Int */;
1190 long var74 /* : Int */;
1191 val* var75 /* : nullable Object */;
1192 long var76 /* : Int */;
1193 long var77 /* : Int */;
1194 long var79 /* : Int */;
1195 long var81 /* : Int */;
1196 long var82 /* : Int */;
1197 long var84 /* : Int */;
1198 long var86 /* : Int */;
1199 long var87 /* : Int */;
1200 long var88 /* : Int */;
1201 long var90 /* : Int */;
1202 short int var91 /* : Bool */;
1203 short int var93 /* : Bool */;
1204 int cltype94;
1205 int idtype95;
1206 const char* var_class_name96;
1207 short int var97 /* : Bool */;
1208 val* var98 /* : Array[Int] */;
1209 long var99 /* : Int */;
1210 long var100 /* : Int */;
1211 long var102 /* : Int */;
1212 val* var103 /* : nullable Object */;
1213 long var104 /* : Int */;
1214 long var106 /* : Int */;
1215 long var107 /* : Int */;
1216 long var108 /* : Int */;
1217 long var109 /* : Int */;
1218 long var111 /* : Int */;
1219 long var112 /* : Int */;
1220 long var114 /* : Int */;
1221 val* var115 /* : nullable Object */;
1222 long var116 /* : Int */;
1223 long var117 /* : Int */;
1224 long var119 /* : Int */;
1225 var = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
1226 if (var == NULL) {
1227 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
1228 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 175);
1229 show_backtrace(1);
1230 }
1231 var_x = var;
1232 var1 = self->attrs[COLOR_string_search__BM_Pattern___length].l; /* _length on <self:BM_Pattern> */
1233 var_m = var1;
1234 var2 = ((val* (*)(val*))(self->class->vft[COLOR_string_search__BM_Pattern__suffixes]))(self) /* suffixes on <self:BM_Pattern>*/;
1235 var_suff = var2;
1236 var3 = 0;
1237 var_i = var3;
1238 for(;;) {
1239 { /* Inline kernel#Int#< (var_i,var_m) */
1240 /* Covariant cast for argument 0 (i) <var_m:Int> isa OTHER */
1241 /* <var_m:Int> isa OTHER */
1242 var6 = 1; /* easy <var_m:Int> isa OTHER*/
1243 if (!var6) {
1244 var_class_name = type_kernel__Int.name;
1245 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1246 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1247 show_backtrace(1);
1248 }
1249 var7 = var_i < var_m;
1250 var4 = var7;
1251 goto RET_LABEL5;
1252 RET_LABEL5:(void)0;
1253 }
1254 if (!var4) break;
1255 var8 = self->attrs[COLOR_string_search__BM_Pattern___gs].val; /* _gs on <self:BM_Pattern> */
1256 if (var8 == NULL) {
1257 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _gs");
1258 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 180);
1259 show_backtrace(1);
1260 }
1261 var9 = BOX_kernel__Int(var_m); /* autobox from Int to nullable Object */
1262 ((void (*)(val*, long, val*))(var8->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var8, var_i, var9) /* []= on <var8:Array[Int]>*/;
1263 var10 = 1;
1264 { /* Inline kernel#Int#+ (var_i,var10) */
1265 var13 = var_i + var10;
1266 var11 = var13;
1267 goto RET_LABEL12;
1268 RET_LABEL12:(void)0;
1269 }
1270 var_i = var11;
1271 CONTINUE_label: (void)0;
1272 }
1273 BREAK_label: (void)0;
1274 var14 = 0;
1275 var_j = var14;
1276 var15 = 1;
1277 { /* Inline kernel#Int#- (var_m,var15) */
1278 var18 = var_m - var15;
1279 var16 = var18;
1280 goto RET_LABEL17;
1281 RET_LABEL17:(void)0;
1282 }
1283 var_i = var16;
1284 for(;;) {
1285 var19 = 1;
1286 { /* Inline kernel#Int#unary - (var19) */
1287 var22 = -var19;
1288 var20 = var22;
1289 goto RET_LABEL21;
1290 RET_LABEL21:(void)0;
1291 }
1292 { /* Inline kernel#Int#>= (var_i,var20) */
1293 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
1294 /* <var20:Int> isa OTHER */
1295 var25 = 1; /* easy <var20:Int> isa OTHER*/
1296 if (!var25) {
1297 var_class_name28 = type_kernel__Int.name;
1298 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
1299 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1300 show_backtrace(1);
1301 }
1302 var29 = var_i >= var20;
1303 var23 = var29;
1304 goto RET_LABEL24;
1305 RET_LABEL24:(void)0;
1306 }
1307 if (!var23) break;
1308 var31 = 1;
1309 { /* Inline kernel#Int#unary - (var31) */
1310 var34 = -var31;
1311 var32 = var34;
1312 goto RET_LABEL33;
1313 RET_LABEL33:(void)0;
1314 }
1315 { /* Inline kernel#Int#== (var_i,var32) */
1316 var37 = var_i == var32;
1317 var35 = var37;
1318 goto RET_LABEL36;
1319 RET_LABEL36:(void)0;
1320 }
1321 var_ = var35;
1322 if (var35){
1323 var30 = var_;
1324 } else {
1325 var38 = ((val* (*)(val*, long))(var_suff->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_suff, var_i) /* [] on <var_suff:Array[Int]>*/;
1326 var39 = 1;
1327 { /* Inline kernel#Int#+ (var_i,var39) */
1328 var42 = var_i + var39;
1329 var40 = var42;
1330 goto RET_LABEL41;
1331 RET_LABEL41:(void)0;
1332 }
1333 { /* Inline kernel#Int#== (var38,var40) */
1334 var45 = (var38 != NULL) && (var38->class == &class_kernel__Int);
1335 if (var45) {
1336 var46 = ((struct instance_kernel__Int*)var38)->value; /* autounbox from nullable Object to Int */;
1337 var45 = (var46 == var40);
1338 }
1339 var43 = var45;
1340 goto RET_LABEL44;
1341 RET_LABEL44:(void)0;
1342 }
1343 var30 = var43;
1344 }
1345 if (var30){
1346 for(;;) {
1347 var47 = 1;
1348 { /* Inline kernel#Int#- (var_m,var47) */
1349 var50 = var_m - var47;
1350 var48 = var50;
1351 goto RET_LABEL49;
1352 RET_LABEL49:(void)0;
1353 }
1354 { /* Inline kernel#Int#- (var48,var_i) */
1355 var53 = var48 - var_i;
1356 var51 = var53;
1357 goto RET_LABEL52;
1358 RET_LABEL52:(void)0;
1359 }
1360 { /* Inline kernel#Int#< (var_j,var51) */
1361 /* Covariant cast for argument 0 (i) <var51:Int> isa OTHER */
1362 /* <var51:Int> isa OTHER */
1363 var56 = 1; /* easy <var51:Int> isa OTHER*/
1364 if (!var56) {
1365 var_class_name59 = type_kernel__Int.name;
1366 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name59);
1367 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1368 show_backtrace(1);
1369 }
1370 var60 = var_j < var51;
1371 var54 = var60;
1372 goto RET_LABEL55;
1373 RET_LABEL55:(void)0;
1374 }
1375 if (!var54) break;
1376 var61 = self->attrs[COLOR_string_search__BM_Pattern___gs].val; /* _gs on <self:BM_Pattern> */
1377 if (var61 == NULL) {
1378 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _gs");
1379 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 188);
1380 show_backtrace(1);
1381 }
1382 var62 = ((val* (*)(val*, long))(var61->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var61, var_j) /* [] on <var61:Array[Int]>*/;
1383 { /* Inline kernel#Int#== (var62,var_m) */
1384 var65 = (var62 != NULL) && (var62->class == &class_kernel__Int);
1385 if (var65) {
1386 var66 = ((struct instance_kernel__Int*)var62)->value; /* autounbox from nullable Object to Int */;
1387 var65 = (var66 == var_m);
1388 }
1389 var63 = var65;
1390 goto RET_LABEL64;
1391 RET_LABEL64:(void)0;
1392 }
1393 if (var63){
1394 var67 = self->attrs[COLOR_string_search__BM_Pattern___gs].val; /* _gs on <self:BM_Pattern> */
1395 if (var67 == NULL) {
1396 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _gs");
1397 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 188);
1398 show_backtrace(1);
1399 }
1400 var68 = 1;
1401 { /* Inline kernel#Int#- (var_m,var68) */
1402 var71 = var_m - var68;
1403 var69 = var71;
1404 goto RET_LABEL70;
1405 RET_LABEL70:(void)0;
1406 }
1407 { /* Inline kernel#Int#- (var69,var_i) */
1408 var74 = var69 - var_i;
1409 var72 = var74;
1410 goto RET_LABEL73;
1411 RET_LABEL73:(void)0;
1412 }
1413 var75 = BOX_kernel__Int(var72); /* autobox from Int to nullable Object */
1414 ((void (*)(val*, long, val*))(var67->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var67, var_j, var75) /* []= on <var67:Array[Int]>*/;
1415 } else {
1416 }
1417 var76 = 1;
1418 { /* Inline kernel#Int#+ (var_j,var76) */
1419 var79 = var_j + var76;
1420 var77 = var79;
1421 goto RET_LABEL78;
1422 RET_LABEL78:(void)0;
1423 }
1424 var_j = var77;
1425 CONTINUE_label80: (void)0;
1426 }
1427 BREAK_label80: (void)0;
1428 } else {
1429 }
1430 var81 = 1;
1431 { /* Inline kernel#Int#- (var_i,var81) */
1432 var84 = var_i - var81;
1433 var82 = var84;
1434 goto RET_LABEL83;
1435 RET_LABEL83:(void)0;
1436 }
1437 var_i = var82;
1438 CONTINUE_label85: (void)0;
1439 }
1440 BREAK_label85: (void)0;
1441 var86 = 0;
1442 var_i = var86;
1443 for(;;) {
1444 var87 = 1;
1445 { /* Inline kernel#Int#- (var_m,var87) */
1446 var90 = var_m - var87;
1447 var88 = var90;
1448 goto RET_LABEL89;
1449 RET_LABEL89:(void)0;
1450 }
1451 { /* Inline kernel#Int#< (var_i,var88) */
1452 /* Covariant cast for argument 0 (i) <var88:Int> isa OTHER */
1453 /* <var88:Int> isa OTHER */
1454 var93 = 1; /* easy <var88:Int> isa OTHER*/
1455 if (!var93) {
1456 var_class_name96 = type_kernel__Int.name;
1457 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name96);
1458 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1459 show_backtrace(1);
1460 }
1461 var97 = var_i < var88;
1462 var91 = var97;
1463 goto RET_LABEL92;
1464 RET_LABEL92:(void)0;
1465 }
1466 if (!var91) break;
1467 var98 = self->attrs[COLOR_string_search__BM_Pattern___gs].val; /* _gs on <self:BM_Pattern> */
1468 if (var98 == NULL) {
1469 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _gs");
1470 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 196);
1471 show_backtrace(1);
1472 }
1473 var99 = 1;
1474 { /* Inline kernel#Int#- (var_m,var99) */
1475 var102 = var_m - var99;
1476 var100 = var102;
1477 goto RET_LABEL101;
1478 RET_LABEL101:(void)0;
1479 }
1480 var103 = ((val* (*)(val*, long))(var_suff->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_suff, var_i) /* [] on <var_suff:Array[Int]>*/;
1481 { /* Inline kernel#Int#- (var100,var103) */
1482 var106 = ((struct instance_kernel__Int*)var103)->value; /* autounbox from nullable Object to Int */;
1483 var107 = var100 - var106;
1484 var104 = var107;
1485 goto RET_LABEL105;
1486 RET_LABEL105:(void)0;
1487 }
1488 var108 = 1;
1489 { /* Inline kernel#Int#- (var_m,var108) */
1490 var111 = var_m - var108;
1491 var109 = var111;
1492 goto RET_LABEL110;
1493 RET_LABEL110:(void)0;
1494 }
1495 { /* Inline kernel#Int#- (var109,var_i) */
1496 var114 = var109 - var_i;
1497 var112 = var114;
1498 goto RET_LABEL113;
1499 RET_LABEL113:(void)0;
1500 }
1501 var115 = BOX_kernel__Int(var112); /* autobox from Int to nullable Object */
1502 ((void (*)(val*, long, val*))(var98->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var98, var104, var115) /* []= on <var98:Array[Int]>*/;
1503 var116 = 1;
1504 { /* Inline kernel#Int#+ (var_i,var116) */
1505 var119 = var_i + var116;
1506 var117 = var119;
1507 goto RET_LABEL118;
1508 RET_LABEL118:(void)0;
1509 }
1510 var_i = var117;
1511 CONTINUE_label120: (void)0;
1512 }
1513 BREAK_label120: (void)0;
1514 RET_LABEL:;
1515 }
1516 /* method string_search#BM_Pattern#compute_gs for (self: Object) */
1517 void VIRTUAL_string_search__BM_Pattern__compute_gs(val* self) {
1518 string_search__BM_Pattern__compute_gs(self);
1519 RET_LABEL:;
1520 }
1521 /* method string_search#BM_Pattern#hash for (self: BM_Pattern): Int */
1522 long string_search__BM_Pattern__hash(val* self) {
1523 long var /* : Int */;
1524 val* var1 /* : String */;
1525 long var2 /* : Int */;
1526 var1 = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
1527 if (var1 == NULL) {
1528 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
1529 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 201);
1530 show_backtrace(1);
1531 }
1532 var2 = ((long (*)(val*))(var1->class->vft[COLOR_kernel__Object__hash]))(var1) /* hash on <var1:String>*/;
1533 var = var2;
1534 goto RET_LABEL;
1535 RET_LABEL:;
1536 return var;
1537 }
1538 /* method string_search#BM_Pattern#hash for (self: Object): Int */
1539 long VIRTUAL_string_search__BM_Pattern__hash(val* self) {
1540 long var /* : Int */;
1541 long var1 /* : Int */;
1542 var1 = string_search__BM_Pattern__hash(self);
1543 var = var1;
1544 RET_LABEL:;
1545 return var;
1546 }
1547 /* method string_search#BM_Pattern#== for (self: BM_Pattern, nullable Object): Bool */
1548 short int string_search__BM_Pattern___61d_61d(val* self, val* p0) {
1549 short int var /* : Bool */;
1550 val* var_o /* var o: nullable Object */;
1551 short int var1 /* : Bool */;
1552 short int var2 /* : Bool */;
1553 int cltype;
1554 int idtype;
1555 short int var_ /* var : Bool */;
1556 val* var3 /* : String */;
1557 val* var4 /* : String */;
1558 short int var5 /* : Bool */;
1559 var_o = p0;
1560 /* <var_o:nullable Object> isa BM_Pattern */
1561 cltype = type_string_search__BM_Pattern.color;
1562 idtype = type_string_search__BM_Pattern.id;
1563 if(var_o == NULL) {
1564 var2 = 0;
1565 } else {
1566 if(cltype >= var_o->type->table_size) {
1567 var2 = 0;
1568 } else {
1569 var2 = var_o->type->type_table[cltype] == idtype;
1570 }
1571 }
1572 var_ = var2;
1573 if (var2){
1574 var3 = var_o->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <var_o:nullable Object(BM_Pattern)> */
1575 if (var3 == NULL) {
1576 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
1577 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 202);
1578 show_backtrace(1);
1579 }
1580 var4 = self->attrs[COLOR_string_search__BM_Pattern___motif].val; /* _motif on <self:BM_Pattern> */
1581 if (var4 == NULL) {
1582 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _motif");
1583 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 202);
1584 show_backtrace(1);
1585 }
1586 var5 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var4) /* == on <var3:String>*/;
1587 var1 = var5;
1588 } else {
1589 var1 = var_;
1590 }
1591 var = var1;
1592 goto RET_LABEL;
1593 RET_LABEL:;
1594 return var;
1595 }
1596 /* method string_search#BM_Pattern#== for (self: Object, nullable Object): Bool */
1597 short int VIRTUAL_string_search__BM_Pattern___61d_61d(val* self, val* p0) {
1598 short int var /* : Bool */;
1599 short int var1 /* : Bool */;
1600 var1 = string_search__BM_Pattern___61d_61d(self, p0);
1601 var = var1;
1602 RET_LABEL:;
1603 return var;
1604 }
1605 /* method string_search#Match#string for (self: Match): String */
1606 val* string_search__Match__string(val* self) {
1607 val* var /* : String */;
1608 val* var1 /* : String */;
1609 var1 = self->attrs[COLOR_string_search__Match___string].val; /* _string on <self:Match> */
1610 if (var1 == NULL) {
1611 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _string");
1612 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 207);
1613 show_backtrace(1);
1614 }
1615 var = var1;
1616 RET_LABEL:;
1617 return var;
1618 }
1619 /* method string_search#Match#string for (self: Object): String */
1620 val* VIRTUAL_string_search__Match__string(val* self) {
1621 val* var /* : String */;
1622 val* var1 /* : String */;
1623 var1 = string_search__Match__string(self);
1624 var = var1;
1625 RET_LABEL:;
1626 return var;
1627 }
1628 /* method string_search#Match#from for (self: Match): Int */
1629 long string_search__Match__from(val* self) {
1630 long var /* : Int */;
1631 long var1 /* : Int */;
1632 var1 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Match> */
1633 var = var1;
1634 RET_LABEL:;
1635 return var;
1636 }
1637 /* method string_search#Match#from for (self: Object): Int */
1638 long VIRTUAL_string_search__Match__from(val* self) {
1639 long var /* : Int */;
1640 long var1 /* : Int */;
1641 var1 = string_search__Match__from(self);
1642 var = var1;
1643 RET_LABEL:;
1644 return var;
1645 }
1646 /* method string_search#Match#length for (self: Match): Int */
1647 long string_search__Match__length(val* self) {
1648 long var /* : Int */;
1649 long var1 /* : Int */;
1650 var1 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Match> */
1651 var = var1;
1652 RET_LABEL:;
1653 return var;
1654 }
1655 /* method string_search#Match#length for (self: Object): Int */
1656 long VIRTUAL_string_search__Match__length(val* self) {
1657 long var /* : Int */;
1658 long var1 /* : Int */;
1659 var1 = string_search__Match__length(self);
1660 var = var1;
1661 RET_LABEL:;
1662 return var;
1663 }
1664 /* method string_search#Match#after for (self: Match): Int */
1665 long string_search__Match__after(val* self) {
1666 long var /* : Int */;
1667 long var1 /* : Int */;
1668 long var2 /* : Int */;
1669 long var3 /* : Int */;
1670 long var5 /* : Int */;
1671 var1 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Match> */
1672 var2 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Match> */
1673 { /* Inline kernel#Int#+ (var1,var2) */
1674 var5 = var1 + var2;
1675 var3 = var5;
1676 goto RET_LABEL4;
1677 RET_LABEL4:(void)0;
1678 }
1679 var = var3;
1680 goto RET_LABEL;
1681 RET_LABEL:;
1682 return var;
1683 }
1684 /* method string_search#Match#after for (self: Object): Int */
1685 long VIRTUAL_string_search__Match__after(val* self) {
1686 long var /* : Int */;
1687 long var1 /* : Int */;
1688 var1 = string_search__Match__after(self);
1689 var = var1;
1690 RET_LABEL:;
1691 return var;
1692 }
1693 /* method string_search#Match#to_s for (self: Match): String */
1694 val* string_search__Match__to_s(val* self) {
1695 val* var /* : String */;
1696 val* var1 /* : String */;
1697 long var2 /* : Int */;
1698 long var3 /* : Int */;
1699 val* var4 /* : String */;
1700 var1 = self->attrs[COLOR_string_search__Match___string].val; /* _string on <self:Match> */
1701 if (var1 == NULL) {
1702 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _string");
1703 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 221);
1704 show_backtrace(1);
1705 }
1706 var2 = self->attrs[COLOR_string_search__Match___from].l; /* _from on <self:Match> */
1707 var3 = self->attrs[COLOR_string_search__Match___length].l; /* _length on <self:Match> */
1708 var4 = ((val* (*)(val*, long, long))(var1->class->vft[COLOR_string__AbstractString__substring]))(var1, var2, var3) /* substring on <var1:String>*/;
1709 var = var4;
1710 goto RET_LABEL;
1711 RET_LABEL:;
1712 return var;
1713 }
1714 /* method string_search#Match#to_s for (self: Object): String */
1715 val* VIRTUAL_string_search__Match__to_s(val* self) {
1716 val* var /* : String */;
1717 val* var1 /* : String */;
1718 var1 = string_search__Match__to_s(self);
1719 var = var1;
1720 RET_LABEL:;
1721 return var;
1722 }
1723 /* method string_search#Match#init for (self: Match, String, Int, Int) */
1724 void string_search__Match__init(val* self, val* p0, long p1, long p2) {
1725 val* var_s /* var s: String */;
1726 long var_f /* var f: Int */;
1727 long var_len /* var len: Int */;
1728 long var /* : Int */;
1729 short int var1 /* : Bool */;
1730 short int var3 /* : Bool */;
1731 int cltype;
1732 int idtype;
1733 const char* var_class_name;
1734 short int var4 /* : Bool */;
1735 long var5 /* : Int */;
1736 short int var6 /* : Bool */;
1737 short int var8 /* : Bool */;
1738 int cltype9;
1739 int idtype10;
1740 const char* var_class_name11;
1741 short int var12 /* : Bool */;
1742 long var13 /* : Int */;
1743 long var15 /* : Int */;
1744 long var16 /* : Int */;
1745 short int var17 /* : Bool */;
1746 short int var19 /* : Bool */;
1747 int cltype20;
1748 int idtype21;
1749 const char* var_class_name22;
1750 short int var23 /* : Bool */;
1751 var_s = p0;
1752 var_f = p1;
1753 var_len = p2;
1754 var = 0;
1755 { /* Inline kernel#Int#>= (var_len,var) */
1756 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
1757 /* <var:Int> isa OTHER */
1758 var3 = 1; /* easy <var:Int> isa OTHER*/
1759 if (!var3) {
1760 var_class_name = type_kernel__Int.name;
1761 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1762 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1763 show_backtrace(1);
1764 }
1765 var4 = var_len >= var;
1766 var1 = var4;
1767 goto RET_LABEL2;
1768 RET_LABEL2:(void)0;
1769 }
1770 if (!var1) {
1771 fprintf(stderr, "Runtime error: %s", "Assert \'positive_length\' failed");
1772 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 226);
1773 show_backtrace(1);
1774 }
1775 var5 = 0;
1776 { /* Inline kernel#Int#>= (var_f,var5) */
1777 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
1778 /* <var5:Int> isa OTHER */
1779 var8 = 1; /* easy <var5:Int> isa OTHER*/
1780 if (!var8) {
1781 var_class_name11 = type_kernel__Int.name;
1782 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
1783 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1784 show_backtrace(1);
1785 }
1786 var12 = var_f >= var5;
1787 var6 = var12;
1788 goto RET_LABEL7;
1789 RET_LABEL7:(void)0;
1790 }
1791 if (!var6) {
1792 fprintf(stderr, "Runtime error: %s", "Assert \'valid_from\' failed");
1793 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 227);
1794 show_backtrace(1);
1795 }
1796 { /* Inline kernel#Int#+ (var_f,var_len) */
1797 var15 = var_f + var_len;
1798 var13 = var15;
1799 goto RET_LABEL14;
1800 RET_LABEL14:(void)0;
1801 }
1802 var16 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
1803 { /* Inline kernel#Int#<= (var13,var16) */
1804 /* Covariant cast for argument 0 (i) <var16:Int> isa OTHER */
1805 /* <var16:Int> isa OTHER */
1806 var19 = 1; /* easy <var16:Int> isa OTHER*/
1807 if (!var19) {
1808 var_class_name22 = type_kernel__Int.name;
1809 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
1810 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
1811 show_backtrace(1);
1812 }
1813 var23 = var13 <= var16;
1814 var17 = var23;
1815 goto RET_LABEL18;
1816 RET_LABEL18:(void)0;
1817 }
1818 if (!var17) {
1819 fprintf(stderr, "Runtime error: %s", "Assert \'valid_after\' failed");
1820 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 228);
1821 show_backtrace(1);
1822 }
1823 self->attrs[COLOR_string_search__Match___string].val = var_s; /* _string on <self:Match> */
1824 self->attrs[COLOR_string_search__Match___from].l = var_f; /* _from on <self:Match> */
1825 self->attrs[COLOR_string_search__Match___length].l = var_len; /* _length on <self:Match> */
1826 RET_LABEL:;
1827 }
1828 /* method string_search#Match#init for (self: Object, String, Int, Int) */
1829 void VIRTUAL_string_search__Match__init(val* self, val* p0, long p1, long p2) {
1830 string_search__Match__init(self, p0, p1, p2);
1831 RET_LABEL:;
1832 }
1833 /* method string_search#Char#search_index_in for (self: Char, String, Int): Int */
1834 long string_search__Char__search_index_in(char self, val* p0, long p1) {
1835 long var /* : Int */;
1836 val* var_s /* var s: String */;
1837 long var_from /* var from: Int */;
1838 long var1 /* : Int */;
1839 long var_stop /* var stop: Int */;
1840 short int var2 /* : Bool */;
1841 short int var4 /* : Bool */;
1842 int cltype;
1843 int idtype;
1844 const char* var_class_name;
1845 short int var5 /* : Bool */;
1846 val* var6 /* : StringCharView */;
1847 val* var7 /* : nullable Object */;
1848 short int var8 /* : Bool */;
1849 short int var10 /* : Bool */;
1850 char var11 /* : Char */;
1851 long var12 /* : Int */;
1852 long var13 /* : Int */;
1853 long var15 /* : Int */;
1854 long var16 /* : Int */;
1855 long var17 /* : Int */;
1856 long var19 /* : Int */;
1857 var_s = p0;
1858 var_from = p1;
1859 var1 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
1860 var_stop = var1;
1861 for(;;) {
1862 { /* Inline kernel#Int#< (var_from,var_stop) */
1863 /* Covariant cast for argument 0 (i) <var_stop:Int> isa OTHER */
1864 /* <var_stop:Int> isa OTHER */
1865 var4 = 1; /* easy <var_stop:Int> isa OTHER*/
1866 if (!var4) {
1867 var_class_name = type_kernel__Int.name;
1868 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1869 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1870 show_backtrace(1);
1871 }
1872 var5 = var_from < var_stop;
1873 var2 = var5;
1874 goto RET_LABEL3;
1875 RET_LABEL3:(void)0;
1876 }
1877 if (!var2) break;
1878 var6 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__chars]))(var_s) /* chars on <var_s:String>*/;
1879 var7 = ((val* (*)(val*, long))(var6->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var6, var_from) /* [] on <var6:StringCharView>*/;
1880 { /* Inline kernel#Char#== (var7,self) */
1881 var10 = (var7 != NULL) && (var7->class == &class_kernel__Char);
1882 if (var10) {
1883 var11 = ((struct instance_kernel__Char*)var7)->value; /* autounbox from nullable Object to Char */;
1884 var10 = (var11 == self);
1885 }
1886 var8 = var10;
1887 goto RET_LABEL9;
1888 RET_LABEL9:(void)0;
1889 }
1890 if (var8){
1891 var = var_from;
1892 goto RET_LABEL;
1893 } else {
1894 }
1895 var12 = 1;
1896 { /* Inline kernel#Int#+ (var_from,var12) */
1897 var15 = var_from + var12;
1898 var13 = var15;
1899 goto RET_LABEL14;
1900 RET_LABEL14:(void)0;
1901 }
1902 var_from = var13;
1903 CONTINUE_label: (void)0;
1904 }
1905 BREAK_label: (void)0;
1906 var16 = 1;
1907 { /* Inline kernel#Int#unary - (var16) */
1908 var19 = -var16;
1909 var17 = var19;
1910 goto RET_LABEL18;
1911 RET_LABEL18:(void)0;
1912 }
1913 var = var17;
1914 goto RET_LABEL;
1915 RET_LABEL:;
1916 return var;
1917 }
1918 /* method string_search#Char#search_index_in for (self: Object, String, Int): Int */
1919 long VIRTUAL_string_search__Char__search_index_in(val* self, val* p0, long p1) {
1920 long var /* : Int */;
1921 long var1 /* : Int */;
1922 char var2 /* : Char */;
1923 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
1924 var1 = string_search__Char__search_index_in(var2, p0, p1);
1925 var = var1;
1926 RET_LABEL:;
1927 return var;
1928 }
1929 /* method string_search#Char#search_in for (self: Char, String, Int): nullable Match */
1930 val* string_search__Char__search_in(char self, val* p0, long p1) {
1931 val* var /* : nullable Match */;
1932 val* var_s /* var s: String */;
1933 long var_from /* var from: Int */;
1934 long var1 /* : Int */;
1935 long var_pos /* var pos: Int */;
1936 long var2 /* : Int */;
1937 short int var3 /* : Bool */;
1938 short int var5 /* : Bool */;
1939 int cltype;
1940 int idtype;
1941 const char* var_class_name;
1942 short int var6 /* : Bool */;
1943 val* var7 /* : null */;
1944 val* var8 /* : Match */;
1945 long var9 /* : Int */;
1946 var_s = p0;
1947 var_from = p1;
1948 var1 = string_search__Char__search_index_in(self, var_s, var_from);
1949 var_pos = var1;
1950 var2 = 0;
1951 { /* Inline kernel#Int#< (var_pos,var2) */
1952 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1953 /* <var2:Int> isa OTHER */
1954 var5 = 1; /* easy <var2:Int> isa OTHER*/
1955 if (!var5) {
1956 var_class_name = type_kernel__Int.name;
1957 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1958 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1959 show_backtrace(1);
1960 }
1961 var6 = var_pos < var2;
1962 var3 = var6;
1963 goto RET_LABEL4;
1964 RET_LABEL4:(void)0;
1965 }
1966 if (var3){
1967 var7 = NULL;
1968 var = var7;
1969 goto RET_LABEL;
1970 } else {
1971 var8 = NEW_string_search__Match(&type_string_search__Match);
1972 var9 = 1;
1973 ((void (*)(val*, val*, long, long))(var8->class->vft[COLOR_string_search__Match__init]))(var8, var_s, var_pos, var9) /* init on <var8:Match>*/;
1974 var = var8;
1975 goto RET_LABEL;
1976 }
1977 RET_LABEL:;
1978 return var;
1979 }
1980 /* method string_search#Char#search_in for (self: Object, String, Int): nullable Match */
1981 val* VIRTUAL_string_search__Char__search_in(val* self, val* p0, long p1) {
1982 val* var /* : nullable Match */;
1983 val* var1 /* : nullable Match */;
1984 char var2 /* : Char */;
1985 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
1986 var1 = string_search__Char__search_in(var2, p0, p1);
1987 var = var1;
1988 RET_LABEL:;
1989 return var;
1990 }
1991 /* method string_search#String#search_index_in for (self: String, String, Int): Int */
1992 long string_search__String__search_index_in(val* self, val* p0, long p1) {
1993 long var /* : Int */;
1994 val* var_s /* var s: String */;
1995 long var_from /* var from: Int */;
1996 long var1 /* : Int */;
1997 short int var2 /* : Bool */;
1998 short int var4 /* : Bool */;
1999 int cltype;
2000 int idtype;
2001 const char* var_class_name;
2002 short int var5 /* : Bool */;
2003 long var6 /* : Int */;
2004 long var7 /* : Int */;
2005 long var8 /* : Int */;
2006 long var10 /* : Int */;
2007 long var11 /* : Int */;
2008 long var12 /* : Int */;
2009 long var14 /* : Int */;
2010 long var_stop /* var stop: Int */;
2011 short int var15 /* : Bool */;
2012 short int var17 /* : Bool */;
2013 int cltype18;
2014 int idtype19;
2015 const char* var_class_name20;
2016 short int var21 /* : Bool */;
2017 long var22 /* : Int */;
2018 long var23 /* : Int */;
2019 long var24 /* : Int */;
2020 long var26 /* : Int */;
2021 long var_i /* var i: Int */;
2022 short int var27 /* : Bool */;
2023 long var28 /* : Int */;
2024 short int var29 /* : Bool */;
2025 short int var31 /* : Bool */;
2026 int cltype32;
2027 int idtype33;
2028 const char* var_class_name34;
2029 short int var35 /* : Bool */;
2030 short int var_ /* var : Bool */;
2031 val* var36 /* : StringCharView */;
2032 val* var37 /* : nullable Object */;
2033 val* var38 /* : StringCharView */;
2034 long var39 /* : Int */;
2035 long var41 /* : Int */;
2036 val* var42 /* : nullable Object */;
2037 short int var43 /* : Bool */;
2038 short int var45 /* : Bool */;
2039 long var46 /* : Int */;
2040 long var47 /* : Int */;
2041 long var49 /* : Int */;
2042 long var50 /* : Int */;
2043 short int var51 /* : Bool */;
2044 short int var53 /* : Bool */;
2045 int cltype54;
2046 int idtype55;
2047 const char* var_class_name56;
2048 short int var57 /* : Bool */;
2049 long var58 /* : Int */;
2050 long var59 /* : Int */;
2051 long var61 /* : Int */;
2052 long var63 /* : Int */;
2053 long var64 /* : Int */;
2054 long var66 /* : Int */;
2055 var_s = p0;
2056 var_from = p1;
2057 var1 = 0;
2058 { /* Inline kernel#Int#>= (var_from,var1) */
2059 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2060 /* <var1:Int> isa OTHER */
2061 var4 = 1; /* easy <var1:Int> isa OTHER*/
2062 if (!var4) {
2063 var_class_name = type_kernel__Int.name;
2064 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2065 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2066 show_backtrace(1);
2067 }
2068 var5 = var_from >= var1;
2069 var2 = var5;
2070 goto RET_LABEL3;
2071 RET_LABEL3:(void)0;
2072 }
2073 if (!var2) {
2074 fprintf(stderr, "Runtime error: %s", "Assert failed");
2075 fprintf(stderr, " (%s:%d)\n", "lib/standard/string_search.nit", 264);
2076 show_backtrace(1);
2077 }
2078 var6 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
2079 var7 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
2080 { /* Inline kernel#Int#- (var6,var7) */
2081 var10 = var6 - var7;
2082 var8 = var10;
2083 goto RET_LABEL9;
2084 RET_LABEL9:(void)0;
2085 }
2086 var11 = 1;
2087 { /* Inline kernel#Int#+ (var8,var11) */
2088 var14 = var8 + var11;
2089 var12 = var14;
2090 goto RET_LABEL13;
2091 RET_LABEL13:(void)0;
2092 }
2093 var_stop = var12;
2094 for(;;) {
2095 { /* Inline kernel#Int#< (var_from,var_stop) */
2096 /* Covariant cast for argument 0 (i) <var_stop:Int> isa OTHER */
2097 /* <var_stop:Int> isa OTHER */
2098 var17 = 1; /* easy <var_stop:Int> isa OTHER*/
2099 if (!var17) {
2100 var_class_name20 = type_kernel__Int.name;
2101 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
2102 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
2103 show_backtrace(1);
2104 }
2105 var21 = var_from < var_stop;
2106 var15 = var21;
2107 goto RET_LABEL16;
2108 RET_LABEL16:(void)0;
2109 }
2110 if (!var15) break;
2111 var22 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
2112 var23 = 1;
2113 { /* Inline kernel#Int#- (var22,var23) */
2114 var26 = var22 - var23;
2115 var24 = var26;
2116 goto RET_LABEL25;
2117 RET_LABEL25:(void)0;
2118 }
2119 var_i = var24;
2120 for(;;) {
2121 var28 = 0;
2122 { /* Inline kernel#Int#>= (var_i,var28) */
2123 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
2124 /* <var28:Int> isa OTHER */
2125 var31 = 1; /* easy <var28:Int> isa OTHER*/
2126 if (!var31) {
2127 var_class_name34 = type_kernel__Int.name;
2128 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
2129 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2130 show_backtrace(1);
2131 }
2132 var35 = var_i >= var28;
2133 var29 = var35;
2134 goto RET_LABEL30;
2135 RET_LABEL30:(void)0;
2136 }
2137 var_ = var29;
2138 if (var29){
2139 var36 = ((val* (*)(val*))(self->class->vft[COLOR_string__AbstractString__chars]))(self) /* chars on <self:String>*/;
2140 var37 = ((val* (*)(val*, long))(var36->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var36, var_i) /* [] on <var36:StringCharView>*/;
2141 var38 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__chars]))(var_s) /* chars on <var_s:String>*/;
2142 { /* Inline kernel#Int#+ (var_i,var_from) */
2143 var41 = var_i + var_from;
2144 var39 = var41;
2145 goto RET_LABEL40;
2146 RET_LABEL40:(void)0;
2147 }
2148 var42 = ((val* (*)(val*, long))(var38->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var38, var39) /* [] on <var38:StringCharView>*/;
2149 { /* Inline kernel#Char#== (var37,var42) */
2150 var45 = var37 == var42 || (((struct instance_kernel__Char*)var37)->value == ((struct instance_kernel__Char*)var42)->value);
2151 var43 = var45;
2152 goto RET_LABEL44;
2153 RET_LABEL44:(void)0;
2154 }
2155 var27 = var43;
2156 } else {
2157 var27 = var_;
2158 }
2159 if (!var27) break;
2160 var46 = 1;
2161 { /* Inline kernel#Int#- (var_i,var46) */
2162 var49 = var_i - var46;
2163 var47 = var49;
2164 goto RET_LABEL48;
2165 RET_LABEL48:(void)0;
2166 }
2167 var_i = var47;
2168 CONTINUE_label: (void)0;
2169 }
2170 BREAK_label: (void)0;
2171 var50 = 0;
2172 { /* Inline kernel#Int#< (var_i,var50) */
2173 /* Covariant cast for argument 0 (i) <var50:Int> isa OTHER */
2174 /* <var50:Int> isa OTHER */
2175 var53 = 1; /* easy <var50:Int> isa OTHER*/
2176 if (!var53) {
2177 var_class_name56 = type_kernel__Int.name;
2178 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name56);
2179 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
2180 show_backtrace(1);
2181 }
2182 var57 = var_i < var50;
2183 var51 = var57;
2184 goto RET_LABEL52;
2185 RET_LABEL52:(void)0;
2186 }
2187 if (var51){
2188 var = var_from;
2189 goto RET_LABEL;
2190 } else {
2191 }
2192 var58 = 1;
2193 { /* Inline kernel#Int#+ (var_from,var58) */
2194 var61 = var_from + var58;
2195 var59 = var61;
2196 goto RET_LABEL60;
2197 RET_LABEL60:(void)0;
2198 }
2199 var_from = var59;
2200 CONTINUE_label62: (void)0;
2201 }
2202 BREAK_label62: (void)0;
2203 var63 = 1;
2204 { /* Inline kernel#Int#unary - (var63) */
2205 var66 = -var63;
2206 var64 = var66;
2207 goto RET_LABEL65;
2208 RET_LABEL65:(void)0;
2209 }
2210 var = var64;
2211 goto RET_LABEL;
2212 RET_LABEL:;
2213 return var;
2214 }
2215 /* method string_search#String#search_index_in for (self: Object, String, Int): Int */
2216 long VIRTUAL_string_search__String__search_index_in(val* self, val* p0, long p1) {
2217 long var /* : Int */;
2218 long var1 /* : Int */;
2219 var1 = string_search__String__search_index_in(self, p0, p1);
2220 var = var1;
2221 RET_LABEL:;
2222 return var;
2223 }
2224 /* method string_search#String#search_in for (self: String, String, Int): nullable Match */
2225 val* string_search__String__search_in(val* self, val* p0, long p1) {
2226 val* var /* : nullable Match */;
2227 val* var_s /* var s: String */;
2228 long var_from /* var from: Int */;
2229 long var1 /* : Int */;
2230 long var_pos /* var pos: Int */;
2231 long var2 /* : Int */;
2232 short int var3 /* : Bool */;
2233 short int var5 /* : Bool */;
2234 int cltype;
2235 int idtype;
2236 const char* var_class_name;
2237 short int var6 /* : Bool */;
2238 val* var7 /* : null */;
2239 val* var8 /* : Match */;
2240 long var9 /* : Int */;
2241 var_s = p0;
2242 var_from = p1;
2243 var1 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_string_search__Pattern__search_index_in]))(self, var_s, var_from) /* search_index_in on <self:String>*/;
2244 var_pos = var1;
2245 var2 = 0;
2246 { /* Inline kernel#Int#< (var_pos,var2) */
2247 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2248 /* <var2:Int> isa OTHER */
2249 var5 = 1; /* easy <var2:Int> isa OTHER*/
2250 if (!var5) {
2251 var_class_name = type_kernel__Int.name;
2252 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2253 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
2254 show_backtrace(1);
2255 }
2256 var6 = var_pos < var2;
2257 var3 = var6;
2258 goto RET_LABEL4;
2259 RET_LABEL4:(void)0;
2260 }
2261 if (var3){
2262 var7 = NULL;
2263 var = var7;
2264 goto RET_LABEL;
2265 } else {
2266 var8 = NEW_string_search__Match(&type_string_search__Match);
2267 var9 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
2268 ((void (*)(val*, val*, long, long))(var8->class->vft[COLOR_string_search__Match__init]))(var8, var_s, var_pos, var9) /* init on <var8:Match>*/;
2269 var = var8;
2270 goto RET_LABEL;
2271 }
2272 RET_LABEL:;
2273 return var;
2274 }
2275 /* method string_search#String#search_in for (self: Object, String, Int): nullable Match */
2276 val* VIRTUAL_string_search__String__search_in(val* self, val* p0, long p1) {
2277 val* var /* : nullable Match */;
2278 val* var1 /* : nullable Match */;
2279 var1 = string_search__String__search_in(self, p0, p1);
2280 var = var1;
2281 RET_LABEL:;
2282 return var;
2283 }
2284 /* method string_search#String#search for (self: String, Pattern): nullable Match */
2285 val* string_search__String__search(val* self, val* p0) {
2286 val* var /* : nullable Match */;
2287 val* var_p /* var p: Pattern */;
2288 long var1 /* : Int */;
2289 val* var2 /* : nullable Match */;
2290 var_p = p0;
2291 var1 = 0;
2292 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>*/;
2293 var = var2;
2294 goto RET_LABEL;
2295 RET_LABEL:;
2296 return var;
2297 }
2298 /* method string_search#String#search for (self: Object, Pattern): nullable Match */
2299 val* VIRTUAL_string_search__String__search(val* self, val* p0) {
2300 val* var /* : nullable Match */;
2301 val* var1 /* : nullable Match */;
2302 var1 = string_search__String__search(self, p0);
2303 var = var1;
2304 RET_LABEL:;
2305 return var;
2306 }
2307 /* method string_search#String#search_from for (self: String, Pattern, Int): nullable Match */
2308 val* string_search__String__search_from(val* self, val* p0, long p1) {
2309 val* var /* : nullable Match */;
2310 val* var_p /* var p: Pattern */;
2311 long var_from /* var from: Int */;
2312 val* var1 /* : nullable Match */;
2313 var_p = p0;
2314 var_from = p1;
2315 var1 = ((val* (*)(val*, val*, long))(var_p->class->vft[COLOR_string_search__Pattern__search_in]))(var_p, self, var_from) /* search_in on <var_p:Pattern>*/;
2316 var = var1;
2317 goto RET_LABEL;
2318 RET_LABEL:;
2319 return var;
2320 }
2321 /* method string_search#String#search_from for (self: Object, Pattern, Int): nullable Match */
2322 val* VIRTUAL_string_search__String__search_from(val* self, val* p0, long p1) {
2323 val* var /* : nullable Match */;
2324 val* var1 /* : nullable Match */;
2325 var1 = string_search__String__search_from(self, p0, p1);
2326 var = var1;
2327 RET_LABEL:;
2328 return var;
2329 }
2330 /* method string_search#String#search_all for (self: String, Pattern): Array[Match] */
2331 val* string_search__String__search_all(val* self, val* p0) {
2332 val* var /* : Array[Match] */;
2333 val* var_p /* var p: Pattern */;
2334 val* var1 /* : Array[Match] */;
2335 var_p = p0;
2336 var1 = ((val* (*)(val*, val*))(var_p->class->vft[COLOR_string_search__Pattern__search_all_in]))(var_p, self) /* search_all_in on <var_p:Pattern>*/;
2337 var = var1;
2338 goto RET_LABEL;
2339 RET_LABEL:;
2340 return var;
2341 }
2342 /* method string_search#String#search_all for (self: Object, Pattern): Array[Match] */
2343 val* VIRTUAL_string_search__String__search_all(val* self, val* p0) {
2344 val* var /* : Array[Match] */;
2345 val* var1 /* : Array[Match] */;
2346 var1 = string_search__String__search_all(self, p0);
2347 var = var1;
2348 RET_LABEL:;
2349 return var;
2350 }
2351 /* method string_search#String#split for (self: String, Pattern): Array[String] */
2352 val* string_search__String__split(val* self, val* p0) {
2353 val* var /* : Array[String] */;
2354 val* var_p /* var p: Pattern */;
2355 val* var1 /* : Array[Match] */;
2356 val* var_matches /* var matches: Array[Match] */;
2357 val* var2 /* : Array[String] */;
2358 long var3 /* : Int */;
2359 val* var_res /* var res: Array[String] */;
2360 val* var4 /* : Iterator[nullable Object] */;
2361 short int var5 /* : Bool */;
2362 val* var6 /* : nullable Object */;
2363 val* var_m /* var m: Match */;
2364 val* var7 /* : String */;
2365 var_p = p0;
2366 var1 = ((val* (*)(val*, val*))(var_p->class->vft[COLOR_string_search__Pattern__split_in]))(var_p, self) /* split_in on <var_p:Pattern>*/;
2367 var_matches = var1;
2368 var2 = NEW_array__Array(&type_array__Arraystring__String);
2369 var3 = ((long (*)(val*))(var_matches->class->vft[COLOR_abstract_collection__Collection__length]))(var_matches) /* length on <var_matches:Array[Match]>*/;
2370 ((void (*)(val*, long))(var2->class->vft[COLOR_array__Array__with_capacity]))(var2, var3) /* with_capacity on <var2:Array[String]>*/;
2371 var_res = var2;
2372 var4 = ((val* (*)(val*))(var_matches->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_matches) /* iterator on <var_matches:Array[Match]>*/;
2373 for(;;) {
2374 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
2375 if(!var5) break;
2376 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
2377 var_m = var6;
2378 var7 = ((val* (*)(val*))(var_m->class->vft[COLOR_string__Object__to_s]))(var_m) /* to_s on <var_m:Match>*/;
2379 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var7) /* add on <var_res:Array[String]>*/;
2380 CONTINUE_label: (void)0;
2381 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
2382 }
2383 BREAK_label: (void)0;
2384 var = var_res;
2385 goto RET_LABEL;
2386 RET_LABEL:;
2387 return var;
2388 }
2389 /* method string_search#String#split for (self: Object, Pattern): Array[String] */
2390 val* VIRTUAL_string_search__String__split(val* self, val* p0) {
2391 val* var /* : Array[String] */;
2392 val* var1 /* : Array[String] */;
2393 var1 = string_search__String__split(self, p0);
2394 var = var1;
2395 RET_LABEL:;
2396 return var;
2397 }
2398 /* method string_search#String#split_with for (self: String, Pattern): Array[String] */
2399 val* string_search__String__split_with(val* self, val* p0) {
2400 val* var /* : Array[String] */;
2401 val* var_p /* var p: Pattern */;
2402 val* var1 /* : Array[String] */;
2403 var_p = p0;
2404 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split]))(self, var_p) /* split on <self:String>*/;
2405 var = var1;
2406 goto RET_LABEL;
2407 RET_LABEL:;
2408 return var;
2409 }
2410 /* method string_search#String#split_with for (self: Object, Pattern): Array[String] */
2411 val* VIRTUAL_string_search__String__split_with(val* self, val* p0) {
2412 val* var /* : Array[String] */;
2413 val* var1 /* : Array[String] */;
2414 var1 = string_search__String__split_with(self, p0);
2415 var = var1;
2416 RET_LABEL:;
2417 return var;
2418 }
2419 /* method string_search#String#replace for (self: String, Pattern, String): String */
2420 val* string_search__String__replace(val* self, val* p0, val* p1) {
2421 val* var /* : String */;
2422 val* var_p /* var p: Pattern */;
2423 val* var_string /* var string: String */;
2424 val* var1 /* : Array[String] */;
2425 val* var2 /* : String */;
2426 var_p = p0;
2427 var_string = p1;
2428 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var_p) /* split_with on <self:String>*/;
2429 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_string__Collection__join]))(var1, var_string) /* join on <var1:Array[String]>*/;
2430 var = var2;
2431 goto RET_LABEL;
2432 RET_LABEL:;
2433 return var;
2434 }
2435 /* method string_search#String#replace for (self: Object, Pattern, String): String */
2436 val* VIRTUAL_string_search__String__replace(val* self, val* p0, val* p1) {
2437 val* var /* : String */;
2438 val* var1 /* : String */;
2439 var1 = string_search__String__replace(self, p0, p1);
2440 var = var1;
2441 RET_LABEL:;
2442 return var;
2443 }
2444 /* method string_search#String#html_escape for (self: String): String */
2445 val* string_search__String__html_escape(val* self) {
2446 val* var /* : String */;
2447 val* var_ret /* var ret: String */;
2448 val* var1 /* : StringCharView */;
2449 char var2 /* : Char */;
2450 short int var3 /* : Bool */;
2451 val* var4 /* : nullable Object */;
2452 char var5 /* : Char */;
2453 static val* varonce;
2454 val* var6 /* : String */;
2455 char* var7 /* : NativeString */;
2456 long var8 /* : Int */;
2457 val* var9 /* : String */;
2458 val* var10 /* : String */;
2459 val* var11 /* : Pattern */;
2460 val* var12 /* : StringCharView */;
2461 char var13 /* : Char */;
2462 short int var14 /* : Bool */;
2463 val* var15 /* : nullable Object */;
2464 char var16 /* : Char */;
2465 static val* varonce17;
2466 val* var18 /* : String */;
2467 char* var19 /* : NativeString */;
2468 long var20 /* : Int */;
2469 val* var21 /* : String */;
2470 val* var22 /* : String */;
2471 val* var23 /* : Pattern */;
2472 val* var24 /* : StringCharView */;
2473 char var25 /* : Char */;
2474 short int var26 /* : Bool */;
2475 val* var27 /* : nullable Object */;
2476 char var28 /* : Char */;
2477 static val* varonce29;
2478 val* var30 /* : String */;
2479 char* var31 /* : NativeString */;
2480 long var32 /* : Int */;
2481 val* var33 /* : String */;
2482 val* var34 /* : String */;
2483 val* var35 /* : Pattern */;
2484 val* var36 /* : StringCharView */;
2485 char var37 /* : Char */;
2486 short int var38 /* : Bool */;
2487 val* var39 /* : nullable Object */;
2488 char var40 /* : Char */;
2489 static val* varonce41;
2490 val* var42 /* : String */;
2491 char* var43 /* : NativeString */;
2492 long var44 /* : Int */;
2493 val* var45 /* : String */;
2494 val* var46 /* : String */;
2495 val* var47 /* : Pattern */;
2496 var_ret = self;
2497 var1 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__AbstractString__chars]))(var_ret) /* chars on <var_ret:String>*/;
2498 var2 = '&';
2499 var4 = BOX_kernel__Char(var2); /* autobox from Char to nullable Object */
2500 var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var4) /* has on <var1:StringCharView>*/;
2501 if (var3){
2502 var5 = '&';
2503 if (varonce) {
2504 var6 = varonce;
2505 } else {
2506 var7 = "&amp;";
2507 var8 = 5;
2508 var9 = string__NativeString__to_s_with_length(var7, var8);
2509 var6 = var9;
2510 varonce = var6;
2511 }
2512 var11 = BOX_kernel__Char(var5); /* autobox from Char to Pattern */
2513 var10 = ((val* (*)(val*, val*, val*))(var_ret->class->vft[COLOR_string_search__String__replace]))(var_ret, var11, var6) /* replace on <var_ret:String>*/;
2514 var_ret = var10;
2515 } else {
2516 }
2517 var12 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__AbstractString__chars]))(var_ret) /* chars on <var_ret:String>*/;
2518 var13 = '<';
2519 var15 = BOX_kernel__Char(var13); /* autobox from Char to nullable Object */
2520 var14 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Collection__has]))(var12, var15) /* has on <var12:StringCharView>*/;
2521 if (var14){
2522 var16 = '<';
2523 if (varonce17) {
2524 var18 = varonce17;
2525 } else {
2526 var19 = "&lt;";
2527 var20 = 4;
2528 var21 = string__NativeString__to_s_with_length(var19, var20);
2529 var18 = var21;
2530 varonce17 = var18;
2531 }
2532 var23 = BOX_kernel__Char(var16); /* autobox from Char to Pattern */
2533 var22 = ((val* (*)(val*, val*, val*))(var_ret->class->vft[COLOR_string_search__String__replace]))(var_ret, var23, var18) /* replace on <var_ret:String>*/;
2534 var_ret = var22;
2535 } else {
2536 }
2537 var24 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__AbstractString__chars]))(var_ret) /* chars on <var_ret:String>*/;
2538 var25 = '>';
2539 var27 = BOX_kernel__Char(var25); /* autobox from Char to nullable Object */
2540 var26 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__Collection__has]))(var24, var27) /* has on <var24:StringCharView>*/;
2541 if (var26){
2542 var28 = '>';
2543 if (varonce29) {
2544 var30 = varonce29;
2545 } else {
2546 var31 = "&gt;";
2547 var32 = 4;
2548 var33 = string__NativeString__to_s_with_length(var31, var32);
2549 var30 = var33;
2550 varonce29 = var30;
2551 }
2552 var35 = BOX_kernel__Char(var28); /* autobox from Char to Pattern */
2553 var34 = ((val* (*)(val*, val*, val*))(var_ret->class->vft[COLOR_string_search__String__replace]))(var_ret, var35, var30) /* replace on <var_ret:String>*/;
2554 var_ret = var34;
2555 } else {
2556 }
2557 var36 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__AbstractString__chars]))(var_ret) /* chars on <var_ret:String>*/;
2558 var37 = '\"';
2559 var39 = BOX_kernel__Char(var37); /* autobox from Char to nullable Object */
2560 var38 = ((short int (*)(val*, val*))(var36->class->vft[COLOR_abstract_collection__Collection__has]))(var36, var39) /* has on <var36:StringCharView>*/;
2561 if (var38){
2562 var40 = '\"';
2563 if (varonce41) {
2564 var42 = varonce41;
2565 } else {
2566 var43 = "&quot;";
2567 var44 = 6;
2568 var45 = string__NativeString__to_s_with_length(var43, var44);
2569 var42 = var45;
2570 varonce41 = var42;
2571 }
2572 var47 = BOX_kernel__Char(var40); /* autobox from Char to Pattern */
2573 var46 = ((val* (*)(val*, val*, val*))(var_ret->class->vft[COLOR_string_search__String__replace]))(var_ret, var47, var42) /* replace on <var_ret:String>*/;
2574 var_ret = var46;
2575 } else {
2576 }
2577 var = var_ret;
2578 goto RET_LABEL;
2579 RET_LABEL:;
2580 return var;
2581 }
2582 /* method string_search#String#html_escape for (self: Object): String */
2583 val* VIRTUAL_string_search__String__html_escape(val* self) {
2584 val* var /* : String */;
2585 val* var1 /* : String */;
2586 var1 = string_search__String__html_escape(self);
2587 var = var1;
2588 RET_LABEL:;
2589 return var;
2590 }