11// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
22// SPDX-License-Identifier: Apache-2.0
33
4+ #![ allow( clippy:: undocumented_unsafe_blocks) ]
45#![ allow( clippy:: missing_safety_doc) ]
56
67extern crate versionize;
@@ -1363,9 +1364,11 @@ fn test_versionize_famstructwrapper() {
13631364 . set_type_version ( Message :: type_id ( ) , 4 ) ;
13641365
13651366 let mut state = MessageFamStructWrapper :: new ( 0 ) . unwrap ( ) ;
1366- state. as_mut_fam_struct ( ) . padding = 8 ;
1367- state. as_mut_fam_struct ( ) . extra_value = 16 ;
1368- state. as_mut_fam_struct ( ) . status = Wrapping ( true ) ;
1367+ unsafe {
1368+ state. as_mut_fam_struct ( ) . padding = 8 ;
1369+ state. as_mut_fam_struct ( ) . extra_value = 16 ;
1370+ state. as_mut_fam_struct ( ) . status = Wrapping ( true ) ;
1371+ }
13691372
13701373 state. push ( 1 ) . unwrap ( ) ;
13711374 state. push ( 2 ) . unwrap ( ) ;
@@ -1482,8 +1485,10 @@ pub struct FamStructTest {
14821485impl FamStructTest {
14831486 fn default_message ( _target_version : u16 ) -> Vec < MessageFamStructWrapper > {
14841487 let mut f = MessageFamStructWrapper :: new ( 0 ) . unwrap ( ) ;
1485- f. as_mut_fam_struct ( ) . padding = 1 ;
1486- f. as_mut_fam_struct ( ) . extra_value = 2 ;
1488+ unsafe {
1489+ f. as_mut_fam_struct ( ) . padding = 1 ;
1490+ f. as_mut_fam_struct ( ) . extra_value = 2 ;
1491+ }
14871492
14881493 f. push ( 10 ) . unwrap ( ) ;
14891494 f. push ( 20 ) . unwrap ( ) ;
@@ -1508,8 +1513,10 @@ impl FamStructTest {
15081513 assert ! ( target_version < 2 ) ;
15091514
15101515 let mut f = MessageFamStructWrapper :: new ( 0 ) . unwrap ( ) ;
1511- f. as_mut_fam_struct ( ) . padding = 3 ;
1512- f. as_mut_fam_struct ( ) . extra_value = 4 ;
1516+ unsafe {
1517+ f. as_mut_fam_struct ( ) . padding = 3 ;
1518+ f. as_mut_fam_struct ( ) . extra_value = 4 ;
1519+ }
15131520
15141521 f. push ( 10 ) . unwrap ( ) ;
15151522 f. push ( 20 ) . unwrap ( ) ;
@@ -1532,13 +1539,17 @@ fn test_versionize_struct_with_famstructs() {
15321539 let mut snapshot_mem = vec ! [ 0u8 ; 1024 ] ;
15331540
15341541 let mut f = MessageFamStructWrapper :: new ( 0 ) . unwrap ( ) ;
1535- f. as_mut_fam_struct ( ) . padding = 5 ;
1536- f. as_mut_fam_struct ( ) . extra_value = 6 ;
1542+ unsafe {
1543+ f. as_mut_fam_struct ( ) . padding = 5 ;
1544+ f. as_mut_fam_struct ( ) . extra_value = 6 ;
1545+ }
15371546 f. push ( 10 ) . unwrap ( ) ;
15381547
15391548 let mut f2 = MessageFamStructWrapper :: new ( 0 ) . unwrap ( ) ;
1540- f2. as_mut_fam_struct ( ) . padding = 7 ;
1541- f2. as_mut_fam_struct ( ) . extra_value = 8 ;
1549+ unsafe {
1550+ f2. as_mut_fam_struct ( ) . padding = 7 ;
1551+ f2. as_mut_fam_struct ( ) . extra_value = 8 ;
1552+ }
15421553 f2. push ( 20 ) . unwrap ( ) ;
15431554
15441555 let state = FamStructTest {
@@ -1614,7 +1625,9 @@ impl SomeStruct {
16141625 fn ser_u16 ( & mut self , target_version : u16 ) -> VersionizeResult < ( ) > {
16151626 // Fail if semantic serialization is called for the latest version.
16161627 assert ! ( target_version < 2 ) ;
1617- self . message . as_mut_fam_struct ( ) . padding += 2 ;
1628+ unsafe {
1629+ self . message . as_mut_fam_struct ( ) . padding += 2 ;
1630+ }
16181631
16191632 Ok ( ( ) )
16201633 }
@@ -1631,7 +1644,9 @@ impl SomeStruct2 {
16311644 fn ser_u16 ( & mut self , target_version : u16 ) -> VersionizeResult < ( ) > {
16321645 // Fail if semantic serialization is called for the latest version.
16331646 assert ! ( target_version < 2 ) ;
1634- self . message . as_mut_fam_struct ( ) . padding += 2 ;
1647+ unsafe {
1648+ self . message . as_mut_fam_struct ( ) . padding += 2 ;
1649+ }
16351650
16361651 Ok ( ( ) )
16371652 }
@@ -1648,7 +1663,7 @@ fn test_famstructwrapper_clone() {
16481663 vm. new_version ( ) . set_type_version ( SomeStruct :: type_id ( ) , 2 ) ;
16491664
16501665 let mut f = MessageFamStructWrapper :: new ( 0 ) . unwrap ( ) ;
1651- f. as_mut_fam_struct ( ) . padding = 8 ;
1666+ unsafe { f. as_mut_fam_struct ( ) . padding = 8 } ;
16521667
16531668 f. push ( 1 ) . unwrap ( ) ;
16541669 f. push ( 2 ) . unwrap ( ) ;
0 commit comments