@@ -212,16 +212,6 @@ impl Owner {
212212 }
213213 }
214214}
215- #[ derive( Clone , Record , ByteRepr , VaArg , FnPtrArg , Default ) ]
216- #[ byte_size( 96 ) ]
217- pub struct Maps {
218- #[ offset( 0 ) ]
219- #[ byte_size( 48 ) ]
220- pub m1 : Map < i32 , ( Value < i32 > , Value < Tracked > ) > ,
221- #[ offset( 48 ) ]
222- #[ byte_size( 48 ) ]
223- pub m2 : Map < i32 , ( Value < i32 > , Value < Tracked > ) > ,
224- }
225215pub fn main ( ) {
226216 __cpp2rust_init_globals ( ) ;
227217 std:: process:: exit ( main_0 ( ) ) ;
@@ -236,8 +226,8 @@ fn main_0() -> i32 {
236226 ( {
237227 let _o: Value < Tracked > = Rc :: new ( RefCell :: new ( Tracked :: new_2 ( { 10 } ) ) ) ;
238228 TrackedImpl :: move_assign (
239- & m1. as_pointer ( )
240- . with_mut ( |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
229+ & ( m1. as_pointer ( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > ) . with_mut (
230+ |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
241231 __m. get_or_insert_with ( 1 . clone ( ) , || {
242232 (
243233 Rc :: new ( RefCell :: new ( 1 ) ) ,
@@ -247,15 +237,16 @@ fn main_0() -> i32 {
247237 . borrow ( )
248238 . 1
249239 . as_pointer ( )
250- } ) ,
240+ } ,
241+ ) ,
251242 _o. as_pointer ( ) ,
252243 )
253244 } ) ;
254245 ( {
255246 let _o: Value < Tracked > = Rc :: new ( RefCell :: new ( Tracked :: new_2 ( { 20 } ) ) ) ;
256247 TrackedImpl :: move_assign (
257- & m1. as_pointer ( )
258- . with_mut ( |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
248+ & ( m1. as_pointer ( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > ) . with_mut (
249+ |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
259250 __m. get_or_insert_with ( 2 . clone ( ) , || {
260251 (
261252 Rc :: new ( RefCell :: new ( 2 ) ) ,
@@ -265,16 +256,17 @@ fn main_0() -> i32 {
265256 . borrow ( )
266257 . 1
267258 . as_pointer ( )
268- } ) ,
259+ } ,
260+ ) ,
269261 _o. as_pointer ( ) ,
270262 )
271263 } ) ;
272264 let m2: Value < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > = Rc :: new ( RefCell :: new ( Map :: new ( ) ) ) ;
273265 ( {
274266 let _o: Value < Tracked > = Rc :: new ( RefCell :: new ( Tracked :: new_2 ( { 30 } ) ) ) ;
275267 TrackedImpl :: move_assign (
276- & m2. as_pointer ( )
277- . with_mut ( |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
268+ & ( m2. as_pointer ( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > ) . with_mut (
269+ |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
278270 __m. get_or_insert_with ( 3 . clone ( ) , || {
279271 (
280272 Rc :: new ( RefCell :: new ( 3 ) ) ,
@@ -284,14 +276,15 @@ fn main_0() -> i32 {
284276 . borrow ( )
285277 . 1
286278 . as_pointer ( )
287- } ) ,
279+ } ,
280+ ) ,
288281 _o. as_pointer ( ) ,
289282 )
290283 } ) ;
291284 assert ! ( ( copies_0. with( |rc| * rc. borrow( ) ) == 0 ) ) ;
292285 cpp_swap ! (
293- m1. as_pointer( )
294- . with_mut ( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
286+ ( m1. as_pointer( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) >> ) . with_mut (
287+ |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
295288 __m. get_or_insert_with( 1 . clone( ) , || {
296289 (
297290 Rc :: new( RefCell :: new( 1 ) ) ,
@@ -301,9 +294,10 @@ fn main_0() -> i32 {
301294 . borrow( )
302295 . 1
303296 . as_pointer( )
304- } ) ,
305- m1. as_pointer( )
306- . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
297+ }
298+ ) ,
299+ ( m1. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>) . with_mut(
300+ |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
307301 __m. get_or_insert_with( 2 . clone( ) , || {
308302 (
309303 Rc :: new( RefCell :: new( 2 ) ) ,
@@ -313,10 +307,11 @@ fn main_0() -> i32 {
313307 . borrow( )
314308 . 1
315309 . as_pointer( )
316- } )
310+ }
311+ )
317312 ) ;
318313 assert ! (
319- ( m1. as_pointer( )
314+ ( ( m1. as_pointer( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) >> )
320315 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
321316 __m. get_or_insert_with( 1 . clone( ) , || {
322317 (
@@ -330,8 +325,7 @@ fn main_0() -> i32 {
330325 } )
331326 . with( |__s| __s. v)
332327 == 20 )
333- && ( m1
334- . as_pointer( )
328+ && ( ( m1. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>)
335329 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
336330 __m. get_or_insert_with( 2 . clone( ) , || {
337331 (
@@ -350,8 +344,7 @@ fn main_0() -> i32 {
350344 cpp_swap ! ( m1. as_pointer( ) , m2. as_pointer( ) ) ;
351345 assert ! (
352346 ( ( * m1. borrow( ) ) . len( ) == 1_usize )
353- && ( m1
354- . as_pointer( )
347+ && ( ( m1. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>)
355348 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
356349 __m. get_or_insert_with( 3 . clone( ) , || {
357350 (
@@ -368,8 +361,7 @@ fn main_0() -> i32 {
368361 ) ;
369362 assert ! (
370363 ( ( ( * m2. borrow( ) ) . len( ) == 2_usize )
371- && ( m2
372- . as_pointer( )
364+ && ( ( m2. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>)
373365 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
374366 __m. get_or_insert_with( 1 . clone( ) , || {
375367 (
@@ -383,8 +375,7 @@ fn main_0() -> i32 {
383375 } )
384376 . with( |__s| __s. v)
385377 == 20 ) )
386- && ( m2
387- . as_pointer( )
378+ && ( ( m2. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>)
388379 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
389380 __m. get_or_insert_with( 2 . clone( ) , || {
390381 (
@@ -428,8 +419,8 @@ fn main_0() -> i32 {
428419 ( * vec_. borrow_mut ( ) ) . push ( __init)
429420 } ;
430421 cpp_swap ! (
431- vec_. as_pointer( ) . decay ( ) . offset( 0_usize ) ,
432- vec_. as_pointer( ) . decay ( ) . offset( 1_usize )
422+ ( vec_. as_pointer( ) as Ptr < Tracked > ) . offset( 0_usize ) ,
423+ ( vec_. as_pointer( ) as Ptr < Tracked > ) . offset( 1_usize )
433424 ) ;
434425 assert ! ( ( { ( * vec_. borrow( ) ) [ 0_usize ] . v } == 5 ) && ( { ( * vec_. borrow( ) ) [ 1_usize ] . v } == 4 ) ) ;
435426 assert ! ( ( copies_0. with( |rc| * rc. borrow( ) ) == 0 ) ) ;
@@ -499,50 +490,74 @@ fn main_0() -> i32 {
499490 ) ) ;
500491 {
501492 let __init = Tracked :: new_2 ( { 1 } ) ;
502- elem ! ( grid. as_pointer( ) . decay ( ) , 0_usize )
493+ elem ! ( ( grid. as_pointer( ) as Ptr < Vec < Tracked >> ) , 0_usize )
503494 . with_mut ( |__v : & mut Vec < Tracked > | __v. push ( __init) )
504495 } ;
505496 {
506497 let __init = Tracked :: new_2 ( { 2 } ) ;
507- elem ! ( grid. as_pointer( ) . decay ( ) , 0_usize )
498+ elem ! ( ( grid. as_pointer( ) as Ptr < Vec < Tracked >> ) , 0_usize )
508499 . with_mut ( |__v : & mut Vec < Tracked > | __v. push ( __init) )
509500 } ;
510501 {
511502 let __init = Tracked :: new_2 ( { 3 } ) ;
512- elem ! ( grid. as_pointer( ) . decay ( ) , 1_usize )
503+ elem ! ( ( grid. as_pointer( ) as Ptr < Vec < Tracked >> ) , 1_usize )
513504 . with_mut ( |__v : & mut Vec < Tracked > | __v. push ( __init) )
514505 } ;
515506 cpp_swap ! (
516- grid. as_pointer( )
517- . decay( )
507+ ( ( grid. as_pointer( ) as Ptr <Vec <Tracked >>)
518508 . offset( 0_usize )
519- . decay ( )
509+ . as_pointer ( ) as Ptr < Tracked > )
520510 . offset( 1_usize ) ,
521- grid. as_pointer( )
522- . decay( )
511+ ( ( grid. as_pointer( ) as Ptr <Vec <Tracked >>)
523512 . offset( 1_usize )
524- . decay ( )
513+ . as_pointer ( ) as Ptr < Tracked > )
525514 . offset( 0_usize )
526515 ) ;
527516 assert ! (
528- ( index!( elem!( grid. as_pointer( ) . decay( ) , 0_usize ) , 1_usize ) . with( |__s| __s. v) == 3 )
529- && ( index!( elem!( grid. as_pointer( ) . decay( ) , 1_usize ) , 0_usize ) . with( |__s| __s. v) == 2 )
517+ ( index!(
518+ elem!( ( grid. as_pointer( ) as Ptr <Vec <Tracked >>) , 0_usize ) ,
519+ 1_usize
520+ )
521+ . with( |__s| __s. v)
522+ == 3 )
523+ && ( index!(
524+ elem!( ( grid. as_pointer( ) as Ptr <Vec <Tracked >>) , 1_usize ) ,
525+ 0_usize
526+ )
527+ . with( |__s| __s. v)
528+ == 2 )
530529 ) ;
531530 cpp_swap ! (
532- grid. as_pointer( ) . decay ( ) . offset( 0_usize ) ,
533- grid. as_pointer( ) . decay ( ) . offset( 1_usize )
531+ ( grid. as_pointer( ) as Ptr < Vec < Tracked >> ) . offset( 0_usize ) ,
532+ ( grid. as_pointer( ) as Ptr < Vec < Tracked >> ) . offset( 1_usize )
534533 ) ;
535534 assert ! (
536- ( ( * grid. as_pointer( ) . decay( ) . offset( 0_usize ) . upgrade( ) . deref( ) ) . len( ) == 1_usize )
537- && ( index!( elem!( grid. as_pointer( ) . decay( ) , 0_usize ) , 0_usize ) . with( |__s| __s. v) == 2 )
535+ ( ( * ( ( grid. as_pointer( ) as Ptr <Vec <Tracked >>)
536+ . offset( 0_usize )
537+ . as_pointer( ) as Ptr <Vec <Tracked >>)
538+ . upgrade( )
539+ . deref( ) )
540+ . len( )
541+ == 1_usize )
542+ && ( index!(
543+ elem!( ( grid. as_pointer( ) as Ptr <Vec <Tracked >>) , 0_usize ) ,
544+ 0_usize
545+ )
546+ . with( |__s| __s. v)
547+ == 2 )
538548 ) ;
539549 assert ! ( ( copies_0. with( |rc| * rc. borrow( ) ) == 0 ) ) ;
540- let maps: Value < Maps > = Rc :: new ( RefCell :: new ( <Maps >:: default ( ) ) ) ;
550+ let maps: Value < Box < [ Map < i32 , ( Value < i32 > , Value < Tracked > ) > ] > > = Rc :: new ( RefCell :: new (
551+ ( 0 ..2 )
552+ . map ( |_| Map :: new ( ) )
553+ . collect :: < Box < [ Map < i32 , ( Value < i32 > , Value < Tracked > ) > ] > > ( ) ,
554+ ) ) ;
541555 ( {
542556 let _o: Value < Tracked > = Rc :: new ( RefCell :: new ( Tracked :: new_2 ( { 1 } ) ) ) ;
543557 TrackedImpl :: move_assign (
544- & field_ptr ! ( maps. as_pointer( ) , m1) . with_mut (
545- |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
558+ & ( ( maps. as_pointer ( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > ) . offset ( 0 )
559+ as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > )
560+ . with_mut ( |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
546561 __m. get_or_insert_with ( 1 . clone ( ) , || {
547562 (
548563 Rc :: new ( RefCell :: new ( 1 ) ) ,
@@ -552,16 +567,16 @@ fn main_0() -> i32 {
552567 . borrow ( )
553568 . 1
554569 . as_pointer ( )
555- } ,
556- ) ,
570+ } ) ,
557571 _o. as_pointer ( ) ,
558572 )
559573 } ) ;
560574 ( {
561575 let _o: Value < Tracked > = Rc :: new ( RefCell :: new ( Tracked :: new_2 ( { 2 } ) ) ) ;
562576 TrackedImpl :: move_assign (
563- & field_ptr ! ( maps. as_pointer( ) , m2) . with_mut (
564- |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
577+ & ( ( maps. as_pointer ( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > ) . offset ( 1 )
578+ as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) > > )
579+ . with_mut ( |__m : & mut Map < i32 , ( Value < i32 > , Value < Tracked > ) > | {
565580 __m. get_or_insert_with ( 2 . clone ( ) , || {
566581 (
567582 Rc :: new ( RefCell :: new ( 2 ) ) ,
@@ -571,18 +586,18 @@ fn main_0() -> i32 {
571586 . borrow ( )
572587 . 1
573588 . as_pointer ( )
574- } ,
575- ) ,
589+ } ) ,
576590 _o. as_pointer ( ) ,
577591 )
578592 } ) ;
579593 cpp_swap ! (
580- field_ptr! ( maps. as_pointer( ) , m1 ) ,
581- field_ptr! ( maps. as_pointer( ) , m2 )
594+ ( maps. as_pointer( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) >> ) . offset ( 0 ) ,
595+ ( maps. as_pointer( ) as Ptr < Map < i32 , ( Value < i32 > , Value < Tracked > ) >> ) . offset ( 1 )
582596 ) ;
583597 assert ! (
584- ( ( * maps. borrow( ) ) . m1. len( ) == 1_usize )
585- && ( field_ptr!( maps. as_pointer( ) , m1)
598+ ( ( * maps. borrow( ) ) [ ( 0 ) as usize ] . len( ) == 1_usize )
599+ && ( ( ( maps. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>) . offset( 0 )
600+ as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>)
586601 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
587602 __m. get_or_insert_with( 2 . clone( ) , || {
588603 (
@@ -598,8 +613,9 @@ fn main_0() -> i32 {
598613 == 2 )
599614 ) ;
600615 assert ! (
601- ( ( * maps. borrow( ) ) . m2. len( ) == 1_usize )
602- && ( field_ptr!( maps. as_pointer( ) , m2)
616+ ( ( * maps. borrow( ) ) [ ( 1 ) as usize ] . len( ) == 1_usize )
617+ && ( ( ( maps. as_pointer( ) as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>) . offset( 1 )
618+ as Ptr <Map <i32 , ( Value <i32 >, Value <Tracked >) >>)
603619 . with_mut( |__m: & mut Map <i32 , ( Value <i32 >, Value <Tracked >) >| {
604620 __m. get_or_insert_with( 1 . clone( ) , || {
605621 (
@@ -815,7 +831,7 @@ pub trait OwnerImpl {
815831}
816832impl OwnerImpl for Ptr < Owner > {
817833 fn move_assign ( & self , _a0 : Ptr < Owner > ) -> Ptr < Owner > {
818- field_ptr ! ( ( * self ) , p)
834+ ( field_ptr ! ( ( * self ) , p) as Ptr < Option < Value < i32 > > > )
819835 . write ( field ! ( _a0, p) . with_mut ( |__v : & mut Option < Value < i32 > > | __v. take ( ) ) ) ;
820836 return ( * self ) . clone ( ) ;
821837 }
0 commit comments