@@ -66,5 +66,57 @@ fn main_0() -> i32 {
6666 ( * ( * f3. borrow( ) ) ) ( _arg0, _arg1, _arg2, _arg3)
6767 } ) == 22_u64 )
6868 ) ;
69+ let stream: Value < Ptr < :: std:: fs:: File > > = Rc :: new ( RefCell :: new (
70+ match Ptr :: from_string_literal ( "rb" ) . to_rust_string ( ) {
71+ v if v == "rb" => std:: fs:: OpenOptions :: new ( )
72+ . read ( true )
73+ . open ( Ptr :: from_string_literal ( "/dev/zero" ) . to_rust_string ( ) )
74+ . ok ( )
75+ . map_or ( Ptr :: null ( ) , |f| Ptr :: alloc ( f) ) ,
76+ v if v == "wb" => std:: fs:: OpenOptions :: new ( )
77+ . write ( true )
78+ . create ( true )
79+ . truncate ( true )
80+ . open ( Ptr :: from_string_literal ( "/dev/zero" ) . to_rust_string ( ) )
81+ . ok ( )
82+ . map_or ( Ptr :: null ( ) , |f| Ptr :: alloc ( f) ) ,
83+ _ => panic ! ( "unsupported mode" ) ,
84+ } ,
85+ ) ) ;
86+ assert ! ( !( ( * stream. borrow( ) ) . is_null( ) ) ) ;
87+ let buf: Value < Box < [ u8 ] > > = Rc :: new ( RefCell :: new (
88+ ( 0 ..16 ) . map ( |_| <u8 >:: default ( ) ) . collect :: < Box < [ u8 ] > > ( ) ,
89+ ) ) ;
90+ {
91+ ( ( buf. as_pointer ( ) as Ptr < u8 > ) as Ptr < u8 > ) . to_any ( ) . memset (
92+ ( ( 'X' as u8 ) as i32 ) as u8 ,
93+ :: std:: mem:: size_of :: < [ u8 ; 16 ] > ( ) as u64 as usize ,
94+ ) ;
95+ ( ( buf. as_pointer ( ) as Ptr < u8 > ) as Ptr < u8 > ) . to_any ( ) . clone ( )
96+ } ;
97+ let n: Value < u64 > = Rc :: new ( RefCell :: new (
98+ ( {
99+ let _arg0: AnyPtr = ( ( buf. as_pointer ( ) as Ptr < u8 > ) as Ptr < u8 > ) . to_any ( ) ;
100+ let _arg1: u64 = 1_u64 ;
101+ let _arg2: u64 = 10_u64 ;
102+ let _arg3: Ptr < :: std:: fs:: File > = ( * stream. borrow ( ) ) . clone ( ) ;
103+ ( * ( * fn1. borrow ( ) ) ) ( _arg0, _arg1, _arg2, _arg3)
104+ } ) ,
105+ ) ) ;
106+ assert ! ( ( ( * n. borrow( ) ) == 10_u64 ) ) ;
107+ let i: Value < i32 > = Rc :: new ( RefCell :: new ( 0 ) ) ;
108+ ' loop_: while ( ( * i. borrow ( ) ) < 10 ) {
109+ assert ! ( ( ( ( * buf. borrow( ) ) [ ( * i. borrow( ) ) as usize ] as i32 ) == 0 ) ) ;
110+ ( * i. borrow_mut ( ) ) . prefix_inc ( ) ;
111+ }
112+ let i: Value < i32 > = Rc :: new ( RefCell :: new ( 10 ) ) ;
113+ ' loop_: while ( ( * i. borrow ( ) ) < 16 ) {
114+ assert ! ( ( ( ( * buf. borrow( ) ) [ ( * i. borrow( ) ) as usize ] as i32 ) == ( ( 'X' as u8 ) as i32 ) ) ) ;
115+ ( * i. borrow_mut ( ) ) . prefix_inc ( ) ;
116+ }
117+ {
118+ ( * stream. borrow ( ) ) . delete ( ) ;
119+ 0
120+ } ;
69121 return 0 ;
70122}
0 commit comments