@@ -64,15 +64,44 @@ pub fn main() {
6464fn main_0 ( ) -> i32 {
6565 let text: Value < Box < [ u8 ] > > = Rc :: new ( RefCell :: new ( Box :: from ( * b"hi\0 " ) ) ) ;
6666 let cp: Value < Ptr < u8 > > = Rc :: new ( RefCell :: new ( ( text. as_pointer ( ) as Ptr < u8 > ) ) ) ;
67- let u: Value < Ptr < u8 > > = Rc :: new ( RefCell :: new ( ( * cp. borrow ( ) ) . reinterpret_cast :: < u8 > ( ) ) ) ;
67+ let u: Value < Ptr < u8 > > = Rc :: new ( RefCell :: new (
68+ ( ( * cp. borrow ( ) ) . reinterpret_cast :: < u8 > ( ) ) . clone ( ) ,
69+ ) ) ;
6870 assert ! ( ( ( ( ( ( ( * u. borrow( ) ) . offset( ( 0 ) as isize ) . read( ) ) as i32 ) == ( 'h' as i32 ) ) as i32 ) != 0 ) ) ;
6971 assert ! ( ( ( ( ( ( ( * u. borrow( ) ) . offset( ( 1 ) as isize ) . read( ) ) as i32 ) == ( 'i' as i32 ) ) as i32 ) != 0 ) ) ;
7072 let h: Value < header > = Rc :: new ( RefCell :: new ( header {
7173 tag : Rc :: new ( RefCell :: new ( 7 ) ) ,
7274 size : Rc :: new ( RefCell :: new ( 32 ) ) ,
7375 } ) ) ;
7476 let hp: Value < Ptr < header > > = Rc :: new ( RefCell :: new ( ( h. as_pointer ( ) ) ) ) ;
75- let v: Value < Ptr < view > > = Rc :: new ( RefCell :: new ( ( * hp. borrow ( ) ) . reinterpret_cast :: < view > ( ) ) ) ;
77+ let v: Value < Ptr < view > > = Rc :: new ( RefCell :: new (
78+ ( ( * hp. borrow ( ) ) . reinterpret_cast :: < view > ( ) ) . clone ( ) ,
79+ ) ) ;
7680 assert ! ( ( ( ( ( * ( * ( * v. borrow( ) ) . upgrade( ) . deref( ) ) . tag. borrow( ) ) == 7 ) as i32 ) != 0 ) ) ;
81+ let data: Value < Box < [ u8 ] > > = Rc :: new ( RefCell :: new ( Box :: from ( * b"hi\0 " ) ) ) ;
82+ let vp: Value < AnyPtr > = Rc :: new ( RefCell :: new (
83+ ( ( data. as_pointer ( ) as Ptr < u8 > ) as Ptr < u8 > ) . to_any ( ) ,
84+ ) ) ;
85+ let n: Value < i32 > = Rc :: new ( RefCell :: new ( 2 ) ) ;
86+ let sel: Value < Ptr < u8 > > = Rc :: new ( RefCell :: new (
87+ if ( ( ( ( * n. borrow ( ) ) < 100 ) as i32 ) != 0 ) {
88+ ( * vp. borrow ( ) ) . clone ( )
89+ } else {
90+ ( AnyPtr :: default ( ) )
91+ }
92+ . reinterpret_cast :: < u8 > ( ) ,
93+ ) ) ;
94+ assert ! ( ( ( ( !( ( * sel. borrow( ) ) . is_null( ) ) ) as i32 ) != 0 ) ) ;
95+ assert ! (
96+ ( ( ( ( ( ( * sel. borrow( ) ) . offset( ( 0 ) as isize ) . read( ) ) as i32 ) == ( 'h' as i32 ) ) as i32 ) != 0 )
97+ ) ;
98+ ( * n. borrow_mut ( ) ) = 200 ;
99+ ( * sel. borrow_mut ( ) ) = if ( ( ( ( * n. borrow ( ) ) < 100 ) as i32 ) != 0 ) {
100+ ( * vp. borrow ( ) ) . clone ( )
101+ } else {
102+ ( AnyPtr :: default ( ) )
103+ }
104+ . reinterpret_cast :: < u8 > ( ) ;
105+ assert ! ( ( ( ( ( * sel. borrow( ) ) . is_null( ) ) as i32 ) != 0 ) ) ;
77106 return 0 ;
78107}
0 commit comments