@@ -89,6 +89,12 @@ pub fn shift_points_12(p: Ptr<Point>, mut d: i32) {
8989pub fn total_len_13 ( names : Ptr < Ptr < i8 > > ) -> i32 {
9090 return ( ( { len5_1 ( ( elem ! ( ( names) , 0 ) . read ( ) ) ) } ) + ( { len5_1 ( ( elem ! ( ( names) , 1 ) . read ( ) ) ) } ) ) ;
9191}
92+ thread_local ! (
93+ pub static kTable_14: Value <Box <[ Box <[ i32 ] >] >> = Rc :: new( RefCell :: new( Box :: new( [
94+ Box :: new( [ 1 , 2 , 3 ] ) ,
95+ Box :: new( [ 4 , 5 , 6 ] ) ,
96+ ] ) ) ) ;
97+ ) ;
9298pub fn main ( ) {
9399 __cpp2rust_init_globals ( ) ;
94100 std:: process:: exit ( main_0 ( ) ) ;
@@ -136,36 +142,92 @@ fn main_0() -> i32 {
136142 Ptr :: < i8 > :: from_string_literal ( b"cde" ) ,
137143 ] ) ) ) ;
138144 assert ! ( ( ( { total_len_13( names. as_pointer( ) , ) } ) == 5 ) ) ;
139- let rows: Value < Box < [ Value < Box < [ i32 ] > > ] > > = Rc :: new ( RefCell :: new ( Box :: new ( [
140- Rc :: new ( RefCell :: new ( Box :: new ( [ 1 , 2 , 3 ] ) ) ) ,
141- Rc :: new ( RefCell :: new ( Box :: new ( [ 4 , 5 , 6 ] ) ) ) ,
145+ let rows: Value < Box < [ Box < [ i32 ] > ] > > = Rc :: new ( RefCell :: new ( Box :: new ( [
146+ Box :: new ( [ 1 , 2 , 3 ] ) ,
147+ Box :: new ( [ 4 , 5 , 6 ] ) ,
142148 ] ) ) ) ;
143- let mut p: Ptr < Value < Box < [ i32 ] > > > = ( rows. as_pointer ( ) as Ptr < Value < Box < [ i32 ] > > > ) ;
149+ let mut p: Ptr < Box < [ i32 ] > > = ( rows. as_pointer ( ) as Ptr < Box < [ i32 ] > > ) ;
144150 p. prefix_inc ( ) ;
145151 assert ! (
146- ( { ( ( p) . read ( ) . as_pointer( ) as Ptr :: <i32 >) . clone( ) } == {
147- ( ( ( ( rows. as_pointer( ) as Ptr <Value < Box <[ i32 ] > >>)
152+ ( { ( ( p) . as_pointer( ) as Ptr :: <i32 >) . clone( ) } == {
153+ ( ( ( ( rows. as_pointer( ) as Ptr <Box <[ i32 ] >>)
148154 . offset( 1 )
149- . read( )
150155 . as_pointer( ) ) as Ptr <i32 >)
151156 . offset( 0 ) )
152157 } )
153158 ) ;
154- let r: Ptr < i32 > = ( ( p) . read ( ) . as_pointer ( ) ) . clone ( ) ;
159+ let r: Ptr < i32 > = ( ( p) . as_pointer ( ) ) . clone ( ) ;
155160 assert ! ( ( ( elem!( ( r) , 0 ) . read( ) ) == 4 ) ) ;
156161 assert ! ( ( ( { sum_2( ( r) . clone( ) , ) } ) == 15 ) ) ;
157- assert ! ( ( ( { sum_2( ( ( p) . read ( ) . as_pointer( ) ) . clone( ) , ) } ) == 15 ) ) ;
158- let mut q: Ptr < Value < Box < [ i32 ] > > > = ( rows. as_pointer ( ) as Ptr < Value < Box < [ i32 ] > > > ) ;
159- assert ! ( ( ( { sum_2( q. offset( ( 1 ) as isize ) . read ( ) . as_pointer( ) , ) } ) == 15 ) ) ;
162+ assert ! ( ( ( { sum_2( ( ( p) . as_pointer( ) ) . clone( ) , ) } ) == 15 ) ) ;
163+ let mut q: Ptr < Box < [ i32 ] > > = ( rows. as_pointer ( ) as Ptr < Box < [ i32 ] > > ) ;
164+ assert ! ( ( ( { sum_2( q. offset( ( 1 ) as isize ) . as_pointer( ) , ) } ) == 15 ) ) ;
160165 assert ! (
161- ( { ( q. offset( ( 1 ) as isize ) . read ( ) . as_pointer( ) as Ptr :: <i32 >) } == {
162- ( ( ( ( rows. as_pointer( ) as Ptr <Value < Box <[ i32 ] > >>)
166+ ( { ( q. offset( ( 1 ) as isize ) . as_pointer( ) as Ptr :: <i32 >) } == {
167+ ( ( ( ( rows. as_pointer( ) as Ptr <Box <[ i32 ] >>)
163168 . offset( 1 )
164- . read( )
165169 . as_pointer( ) ) as Ptr <i32 >)
166170 . offset( 0 ) )
167171 } )
168172 ) ;
173+ elem ! ( ( q. offset( ( 1 ) as isize ) . as_pointer( ) as Ptr :: <i32 >) , 2 ) . write ( 8 ) ;
174+ assert ! (
175+ ( ( * rows. borrow( ) ) [ ( 1 ) as usize ] [ ( 2 ) as usize ] == 8 )
176+ && ( ( * rows. borrow( ) ) [ ( 0 ) as usize ] [ ( 2 ) as usize ] == 3 )
177+ ) ;
178+ ( * rows. borrow_mut ( ) ) [ ( 0 ) as usize ] [ ( 1 ) as usize ] =
179+ { ( * rows. borrow ( ) ) [ ( 0 ) as usize ] [ ( 2 ) as usize ] } ;
180+ elem ! ( ( q. offset( ( 1 ) as isize ) . as_pointer( ) as Ptr :: <i32 >) , 0 )
181+ . write ( { ( elem ! ( ( q. offset( ( 0 ) as isize ) . as_pointer( ) as Ptr :: <i32 >) , 1 ) . read ( ) ) } ) ;
182+ {
183+ let __rhs = { ( elem ! ( ( q. offset( ( 0 ) as isize ) . as_pointer( ) as Ptr :: <i32 >) , 2 ) . read ( ) ) } ;
184+ elem ! ( ( q. offset( ( 1 ) as isize ) . as_pointer( ) as Ptr :: <i32 >) , 1 )
185+ . with_mut ( |__v| * __v = * __v + __rhs)
186+ } ;
187+ assert ! (
188+ ( ( ( * rows. borrow( ) ) [ ( 0 ) as usize ] [ ( 1 ) as usize ] == 3 )
189+ && ( ( * rows. borrow( ) ) [ ( 1 ) as usize ] [ ( 0 ) as usize ] == 3 ) )
190+ && ( ( * rows. borrow( ) ) [ ( 1 ) as usize ] [ ( 1 ) as usize ] == 8 )
191+ ) ;
192+ let key: Value < Box < [ i32 ] > > = Rc :: new ( RefCell :: new ( Box :: new ( [ 0 , 4 , 5 , 6 ] ) ) ) ;
193+ assert ! (
194+ ( ( ( ( key. as_pointer( ) as Ptr <i32 >) . offset( 1 ) ) as Ptr :: <i32 >)
195+ . to_any( )
196+ . memcmp(
197+ & ( ( ( ( kTable_14. with( |v| v. as_pointer( ) ) as Ptr <Box <[ i32 ] >>)
198+ . offset( 1 )
199+ . as_pointer( ) ) as Ptr :: <i32 >) as Ptr :: <i32 >)
200+ . to_any( ) ,
201+ :: std:: mem:: size_of:: <[ i32 ; 3 ] >( )
202+ )
203+ == 0 )
204+ ) ;
205+ assert ! (
206+ ( ( ( ( key. as_pointer( ) as Ptr <i32 >) . offset( 1 ) ) as Ptr :: <i32 >)
207+ . to_any( )
208+ . memcmp(
209+ & ( ( ( ( kTable_14. with( |v| v. as_pointer( ) ) as Ptr <Box <[ i32 ] >>)
210+ . offset( 0 )
211+ . as_pointer( ) ) as Ptr :: <i32 >) as Ptr :: <i32 >)
212+ . to_any( ) ,
213+ :: std:: mem:: size_of:: <[ i32 ; 3 ] >( )
214+ )
215+ != 0 )
216+ ) ;
217+ assert ! (
218+ ( ( {
219+ let __idx0 = ( 1 ) as usize ;
220+ let __idx1 = ( 2 ) as usize ;
221+ kTable_14. with( |rc| rc. borrow( ) [ __idx0] [ __idx1] )
222+ } ) == 6 )
223+ && ( ( {
224+ let __idx0 = ( 0 ) as usize ;
225+ let __idx1 = ( 1 ) as usize ;
226+ kTable_14. with( |rc| rc. borrow( ) [ __idx0] [ __idx1] )
227+ } ) == 2 )
228+ ) ;
169229 return 0 ;
170230}
171- pub fn __cpp2rust_init_globals ( ) { }
231+ pub fn __cpp2rust_init_globals ( ) {
232+ let _ = kTable_14. with ( |_| ( ) ) ;
233+ }
0 commit comments