3232    Unreachable ,
3333    Value ,
3434)
35- from  mypyc .ir .rtypes  import  RInstance , int32_rprimitive , object_rprimitive 
35+ from  mypyc .ir .rtypes  import  (
36+     RInstance ,
37+     int32_rprimitive ,
38+     object_pointer_rprimitive ,
39+     object_rprimitive ,
40+ )
3641from  mypyc .irbuild .builder  import  IRBuilder , calculate_arg_defaults , gen_arg_defaults 
3742from  mypyc .irbuild .context  import  FuncInfo , GeneratorClass 
3843from  mypyc .irbuild .env_class  import  (
@@ -256,7 +261,14 @@ def add_next_to_generator_class(builder: IRBuilder, fn_info: FuncInfo, fn_decl:
256261        result  =  builder .add (
257262            Call (
258263                fn_decl ,
259-                 [builder .self (), none_reg , none_reg , none_reg , none_reg ],
264+                 [
265+                     builder .self (),
266+                     none_reg ,
267+                     none_reg ,
268+                     none_reg ,
269+                     none_reg ,
270+                     Integer (0 , object_pointer_rprimitive ),
271+                 ],
260272                fn_info .fitem .line ,
261273            )
262274        )
@@ -272,7 +284,14 @@ def add_send_to_generator_class(builder: IRBuilder, fn_info: FuncInfo, fn_decl:
272284        result  =  builder .add (
273285            Call (
274286                fn_decl ,
275-                 [builder .self (), none_reg , none_reg , none_reg , builder .read (arg )],
287+                 [
288+                     builder .self (),
289+                     none_reg ,
290+                     none_reg ,
291+                     none_reg ,
292+                     builder .read (arg ),
293+                     Integer (0 , object_pointer_rprimitive ),
294+                 ],
276295                fn_info .fitem .line ,
277296            )
278297        )
@@ -297,7 +316,14 @@ def add_throw_to_generator_class(builder: IRBuilder, fn_info: FuncInfo, fn_decl:
297316        result  =  builder .add (
298317            Call (
299318                fn_decl ,
300-                 [builder .self (), builder .read (typ ), builder .read (val ), builder .read (tb ), none_reg ],
319+                 [
320+                     builder .self (),
321+                     builder .read (typ ),
322+                     builder .read (val ),
323+                     builder .read (tb ),
324+                     none_reg ,
325+                     Integer (0 , object_pointer_rprimitive ),
326+                 ],
301327                fn_info .fitem .line ,
302328            )
303329        )
@@ -377,8 +403,15 @@ def setup_env_for_generator_class(builder: IRBuilder) -> None:
377403    # TODO: Use the right type here instead of object? 
378404    exc_arg  =  builder .add_local (Var ("arg" ), object_rprimitive , is_arg = True )
379405
406+     # Parameter that can used to pass a pointer which can used instead of 
407+     # raising StopIteration(value). If the value is NULL, this won't be used. 
408+     stop_iter_value_arg  =  builder .add_local (
409+         Var ("stop_iter_ptr" ), object_pointer_rprimitive , is_arg = True 
410+     )
411+ 
380412    cls .exc_regs  =  (exc_type , exc_val , exc_tb )
381413    cls .send_arg_reg  =  exc_arg 
414+     cls .stop_iter_value_reg  =  stop_iter_value_arg 
382415
383416    cls .self_reg  =  builder .read (self_target , fitem .line )
384417    if  builder .fn_info .can_merge_generator_and_env_classes ():
0 commit comments