1 #include "div_by_zero.sep.0.h"
2 /* method div_by_zero#ToolContext#div_by_zero_phase for (self: ToolContext): Phase */
3 val
* div_by_zero__ToolContext__div_by_zero_phase(val
* self
) {
4 val
* var
/* : Phase */;
5 val
* var1
/* : Phase */;
6 var1
= self
->attrs
[COLOR_div_by_zero__ToolContext___64ddiv_by_zero_phase
].val
; /* @div_by_zero_phase on <self:ToolContext> */
8 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @div_by_zero_phase", "src/div_by_zero.nit", 26);
15 /* method div_by_zero#ToolContext#div_by_zero_phase for (self: Object): Phase */
16 val
* VIRTUAL_div_by_zero__ToolContext__div_by_zero_phase(val
* self
) {
17 val
* var
/* : Phase */;
18 val
* var1
/* : Phase */;
19 var1
= div_by_zero__ToolContext__div_by_zero_phase(self
);
24 /* method div_by_zero#ToolContext#div_by_zero_phase= for (self: ToolContext, Phase) */
25 void div_by_zero__ToolContext__div_by_zero_phase_61d(val
* self
, val
* p0
) {
26 self
->attrs
[COLOR_div_by_zero__ToolContext___64ddiv_by_zero_phase
].val
= p0
; /* @div_by_zero_phase on <self:ToolContext> */
29 /* method div_by_zero#ToolContext#div_by_zero_phase= for (self: Object, Phase) */
30 void VIRTUAL_div_by_zero__ToolContext__div_by_zero_phase_61d(val
* self
, val
* p0
) {
31 div_by_zero__ToolContext__div_by_zero_phase_61d(self
, p0
);
34 /* method div_by_zero#DivByZeroPhase#process_nmodule for (self: DivByZeroPhase, AModule) */
35 void div_by_zero__DivByZeroPhase__process_nmodule(val
* self
, val
* p0
) {
36 val
* var_nmodule
/* var nmodule: AModule */;
37 val
* var
/* : nullable MModule */;
38 val
* var_mmodule
/* var mmodule: MModule */;
39 val
* var1
/* : DivByZeroVisitor */;
40 val
* var2
/* : ToolContext */;
41 val
* var_visitor
/* var visitor: DivByZeroVisitor */;
43 var
= ((val
* (*)(val
*))(var_nmodule
->class->vft
[COLOR_modelbuilder__AModule__mmodule
]))(var_nmodule
) /* mmodule on <var_nmodule:AModule>*/;
45 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/div_by_zero.nit", 41);
49 var1
= NEW_div_by_zero__DivByZeroVisitor(&type_div_by_zero__DivByZeroVisitor
);
50 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_phase__Phase__toolcontext
]))(self
) /* toolcontext on <self:DivByZeroPhase>*/;
51 ((void (*)(val
*, val
*, val
*))(var1
->class->vft
[COLOR_div_by_zero__DivByZeroVisitor__init
]))(var1
, var2
, var_mmodule
) /* init on <var1:DivByZeroVisitor>*/;
52 CHECK_NEW_div_by_zero__DivByZeroVisitor(var1
);
54 ((void (*)(val
*, val
*))(var_visitor
->class->vft
[COLOR_parser_nodes__Visitor__enter_visit
]))(var_visitor
, var_nmodule
) /* enter_visit on <var_visitor:DivByZeroVisitor>*/;
57 /* method div_by_zero#DivByZeroPhase#process_nmodule for (self: Object, AModule) */
58 void VIRTUAL_div_by_zero__DivByZeroPhase__process_nmodule(val
* self
, val
* p0
) {
59 div_by_zero__DivByZeroPhase__process_nmodule(self
, p0
);
62 /* method div_by_zero#DivByZeroVisitor#toolcontext for (self: DivByZeroVisitor): ToolContext */
63 val
* div_by_zero__DivByZeroVisitor__toolcontext(val
* self
) {
64 val
* var
/* : ToolContext */;
65 val
* var1
/* : ToolContext */;
66 var1
= self
->attrs
[COLOR_div_by_zero__DivByZeroVisitor___64dtoolcontext
].val
; /* @toolcontext on <self:DivByZeroVisitor> */
68 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @toolcontext", "src/div_by_zero.nit", 53);
75 /* method div_by_zero#DivByZeroVisitor#toolcontext for (self: Object): ToolContext */
76 val
* VIRTUAL_div_by_zero__DivByZeroVisitor__toolcontext(val
* self
) {
77 val
* var
/* : ToolContext */;
78 val
* var1
/* : ToolContext */;
79 var1
= div_by_zero__DivByZeroVisitor__toolcontext(self
);
84 /* method div_by_zero#DivByZeroVisitor#toolcontext= for (self: DivByZeroVisitor, ToolContext) */
85 void div_by_zero__DivByZeroVisitor__toolcontext_61d(val
* self
, val
* p0
) {
86 self
->attrs
[COLOR_div_by_zero__DivByZeroVisitor___64dtoolcontext
].val
= p0
; /* @toolcontext on <self:DivByZeroVisitor> */
89 /* method div_by_zero#DivByZeroVisitor#toolcontext= for (self: Object, ToolContext) */
90 void VIRTUAL_div_by_zero__DivByZeroVisitor__toolcontext_61d(val
* self
, val
* p0
) {
91 div_by_zero__DivByZeroVisitor__toolcontext_61d(self
, p0
);
94 /* method div_by_zero#DivByZeroVisitor#mmodule for (self: DivByZeroVisitor): MModule */
95 val
* div_by_zero__DivByZeroVisitor__mmodule(val
* self
) {
96 val
* var
/* : MModule */;
97 val
* var1
/* : MModule */;
98 var1
= self
->attrs
[COLOR_div_by_zero__DivByZeroVisitor___64dmmodule
].val
; /* @mmodule on <self:DivByZeroVisitor> */
100 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/div_by_zero.nit", 56);
107 /* method div_by_zero#DivByZeroVisitor#mmodule for (self: Object): MModule */
108 val
* VIRTUAL_div_by_zero__DivByZeroVisitor__mmodule(val
* self
) {
109 val
* var
/* : MModule */;
110 val
* var1
/* : MModule */;
111 var1
= div_by_zero__DivByZeroVisitor__mmodule(self
);
116 /* method div_by_zero#DivByZeroVisitor#mmodule= for (self: DivByZeroVisitor, MModule) */
117 void div_by_zero__DivByZeroVisitor__mmodule_61d(val
* self
, val
* p0
) {
118 self
->attrs
[COLOR_div_by_zero__DivByZeroVisitor___64dmmodule
].val
= p0
; /* @mmodule on <self:DivByZeroVisitor> */
121 /* method div_by_zero#DivByZeroVisitor#mmodule= for (self: Object, MModule) */
122 void VIRTUAL_div_by_zero__DivByZeroVisitor__mmodule_61d(val
* self
, val
* p0
) {
123 div_by_zero__DivByZeroVisitor__mmodule_61d(self
, p0
);
126 /* method div_by_zero#DivByZeroVisitor#init for (self: DivByZeroVisitor, ToolContext, MModule) */
127 void div_by_zero__DivByZeroVisitor__init(val
* self
, val
* p0
, val
* p1
) {
128 val
* var_toolcontext
/* var toolcontext: ToolContext */;
129 val
* var_mmodule
/* var mmodule: MModule */;
130 var_toolcontext
= p0
;
132 ((void (*)(val
*))(self
->class->vft
[COLOR_parser_nodes__Visitor__init
]))(self
) /* init on <self:DivByZeroVisitor>*/;
133 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_div_by_zero__DivByZeroVisitor__toolcontext_61d
]))(self
, var_toolcontext
) /* toolcontext= on <self:DivByZeroVisitor>*/;
134 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_div_by_zero__DivByZeroVisitor__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:DivByZeroVisitor>*/;
137 /* method div_by_zero#DivByZeroVisitor#init for (self: Object, ToolContext, MModule) */
138 void VIRTUAL_div_by_zero__DivByZeroVisitor__init(val
* self
, val
* p0
, val
* p1
) {
139 div_by_zero__DivByZeroVisitor__init(self
, p0
, p1
);
142 /* method div_by_zero#DivByZeroVisitor#visit for (self: DivByZeroVisitor, ANode) */
143 void div_by_zero__DivByZeroVisitor__visit(val
* self
, val
* p0
) {
144 val
* var_node
/* var node: ANode */;
145 short int var
/* : Bool */;
148 short int var1
/* : Bool */;
149 val
* var2
/* : AExpr */;
150 val
* var_op2
/* var op2: AExpr */;
151 short int var3
/* : Bool */;
154 short int var6
/* : Bool */;
155 val
* var7
/* : nullable Int */;
156 long var8
/* : Int */;
157 short int var9
/* : Bool */;
158 val
* var10
/* : nullable Object */;
159 val
* var11
/* : AExpr */;
160 val
* var_op1
/* var op1: AExpr */;
161 val
* var12
/* : MModule */;
163 val
* var13
/* : String */;
164 char* var14
/* : NativeString */;
165 long var15
/* : Int */;
166 val
* var16
/* : String */;
167 val
* var17
/* : MClass */;
168 val
* var18
/* : MClassType */;
169 val
* var_int_type
/* var int_type: MClassType */;
170 val
* var19
/* : nullable MType */;
171 val
* var20
/* : MModule */;
172 val
* var21
/* : null */;
173 short int var22
/* : Bool */;
174 short int var23
/* : Bool */;
175 val
* var24
/* : ToolContext */;
176 val
* var25
/* : Location */;
177 static val
* varonce26
;
178 val
* var27
/* : String */;
179 char* var28
/* : NativeString */;
180 long var29
/* : Int */;
181 val
* var30
/* : String */;
183 ((void (*)(val
*, val
*))(var_node
->class->vft
[COLOR_parser_nodes__ANode__visit_all
]))(var_node
, self
) /* visit_all on <var_node:ANode>*/;
184 /* <var_node:ANode> isa ASlashExpr */
185 cltype
= type_parser_nodes__ASlashExpr
.color
;
186 idtype
= type_parser_nodes__ASlashExpr
.id
;
187 if(cltype
>= var_node
->type
->table_size
) {
190 var
= var_node
->type
->type_table
[cltype
] == idtype
;
197 var2
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_parser_nodes__ABinopExpr__n_expr2
]))(var_node
) /* n_expr2 on <var_node:ANode(ASlashExpr)>*/;
199 /* <var_op2:AExpr> isa AIntExpr */
200 cltype4
= type_parser_nodes__AIntExpr
.color
;
201 idtype5
= type_parser_nodes__AIntExpr
.id
;
202 if(cltype4
>= var_op2
->type
->table_size
) {
205 var3
= var_op2
->type
->type_table
[cltype4
] == idtype5
;
212 var7
= ((val
* (*)(val
*))(var_op2
->class->vft
[COLOR_literal__AIntExpr__value
]))(var_op2
) /* value on <var_op2:AExpr(AIntExpr)>*/;
214 var10
= BOX_kernel__Int(var8
); /* autobox from Int to nullable Object */
216 var9
= 1; /* <var8:Int> cannot be null */
218 var9
= ((short int (*)(val
*, val
*))(var7
->class->vft
[COLOR_kernel__Object___33d_61d
]))(var7
, var10
) /* != on <var7:nullable Int>*/;
224 var11
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_parser_nodes__ASendExpr__n_expr
]))(var_node
) /* n_expr on <var_node:ANode(ASlashExpr)>*/;
226 var12
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_div_by_zero__DivByZeroVisitor__mmodule
]))(self
) /* mmodule on <self:DivByZeroVisitor>*/;
232 var16
= string__NativeString__to_s_with_length(var14
, var15
);
236 var17
= ((val
* (*)(val
*, val
*))(var12
->class->vft
[COLOR_model__MModule__get_primitive_class
]))(var12
, var13
) /* get_primitive_class on <var12:MModule>*/;
237 var18
= ((val
* (*)(val
*))(var17
->class->vft
[COLOR_model__MClass__mclass_type
]))(var17
) /* mclass_type on <var17:MClass>*/;
238 var_int_type
= var18
;
239 var19
= ((val
* (*)(val
*))(var_op1
->class->vft
[COLOR_typing__AExpr__mtype
]))(var_op1
) /* mtype on <var_op1:AExpr>*/;
240 var20
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_div_by_zero__DivByZeroVisitor__mmodule
]))(self
) /* mmodule on <self:DivByZeroVisitor>*/;
243 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/div_by_zero.nit", 86);
246 var22
= ((short int (*)(val
*, val
*, val
*, val
*))(var19
->class->vft
[COLOR_model__MType__is_subtype
]))(var19
, var20
, var21
, var_int_type
) /* is_subtype on <var19:nullable MType>*/;
253 var24
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_div_by_zero__DivByZeroVisitor__toolcontext
]))(self
) /* toolcontext on <self:DivByZeroVisitor>*/;
254 var25
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_parser_nodes__ANode__location
]))(var_node
) /* location on <var_node:ANode(ASlashExpr)>*/;
258 var28
= "Error: Definitely division by zero";
260 var30
= string__NativeString__to_s_with_length(var28
, var29
);
264 ((void (*)(val
*, val
*, val
*))(var24
->class->vft
[COLOR_toolcontext__ToolContext__error
]))(var24
, var25
, var27
) /* error on <var24:ToolContext>*/;
267 /* method div_by_zero#DivByZeroVisitor#visit for (self: Object, ANode) */
268 void VIRTUAL_div_by_zero__DivByZeroVisitor__visit(val
* self
, val
* p0
) {
269 div_by_zero__DivByZeroVisitor__visit(self
, p0
);