@@ -47,18 +47,24 @@ mod tests {
47
47
#[ cfg( not( feature = "sync" ) ) ]
48
48
assert ! ( boxed. as_ref( ) . clone( ) . borrow( ) . as_ref( ) . is_none( ) ) ;
49
49
#[ cfg( feature = "sync" ) ]
50
- assert ! ( boxed. as_ref( ) . clone ( ) . borrow ( ) . lock( ) . unwrap( ) . as_ref( ) . is_none( ) ) ;
50
+ assert ! ( boxed. as_ref( ) . lock( ) . unwrap( ) . as_ref( ) . is_none( ) ) ;
51
51
}
52
52
_ => panic ! ( "This should never happen" ) ,
53
53
}
54
54
let value = concat. get_usize ( 0 ) ;
55
55
assert_eq ! ( value, 1 ) ;
56
56
match & concat {
57
57
crate :: Sequence :: ConcatSequence { boxed, .. } => {
58
+ #[ cfg( not( feature = "sync" ) ) ]
58
59
assert_eq ! (
59
60
* boxed. as_ref( ) . clone( ) . borrow( ) . as_ref( ) . unwrap( ) . as_ref( ) ,
60
61
vec![ 1 , 2 , 3 , 4 , 5 , 6 ]
61
62
) ;
63
+ #[ cfg( feature = "sync" ) ]
64
+ assert_eq ! (
65
+ * boxed. as_ref( ) . lock( ) . unwrap( ) . as_ref( ) . unwrap( ) . as_ref( ) ,
66
+ vec![ 1 , 2 , 3 , 4 , 5 , 6 ]
67
+ ) ;
62
68
}
63
69
_ => panic ! ( "This should never happen" ) ,
64
70
}
@@ -443,11 +449,11 @@ mod tests {
443
449
}
444
450
}
445
451
446
- impl < T : DafnyType > Upcast < dyn Any > for ClassWrapper < T > {
447
- UpcastFn ! ( dyn Any ) ;
452
+ impl < T : DafnyType > Upcast < crate :: DynAny > for ClassWrapper < T > {
453
+ UpcastFn ! ( crate :: DynAny ) ;
448
454
}
449
- impl < T : DafnyType > UpcastObject < dyn Any > for ClassWrapper < T > {
450
- UpcastObjectFn ! ( dyn Any ) ;
455
+ impl < T : DafnyType > UpcastObject < crate :: DynAny > for ClassWrapper < T > {
456
+ UpcastObjectFn ! ( crate :: DynAny ) ;
451
457
}
452
458
453
459
#[ test]
@@ -549,19 +555,19 @@ mod tests {
549
555
#[ test]
550
556
fn test_coercion_immutable ( ) {
551
557
let o = ClassWrapper :: < i32 > :: constructor ( 1 ) ;
552
- let a: Ptr < dyn Any > = Upcast :: < dyn Any > :: upcast ( read ! ( o) ) ;
558
+ let a: Ptr < crate :: DynAny > = Upcast :: < crate :: DynAny > :: upcast ( read ! ( o) ) ;
553
559
assert_eq ! ( cast!( a, ClassWrapper <i32 >) , o) ;
554
560
let seq_o = seq ! [ o] ;
555
- let seq_a = Sequence :: < Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , dyn Any > ( ) ) ( seq_o) ;
561
+ let seq_a = Sequence :: < Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , crate :: DynAny > ( ) ) ( seq_o) ;
556
562
assert_eq ! ( cast!( seq_a. get_usize( 0 ) , ClassWrapper <i32 >) , o) ;
557
563
let set_o = set ! { o} ;
558
- let set_a = Set :: < Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , dyn Any > ( ) ) ( set_o) ;
564
+ let set_a = Set :: < Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , crate :: DynAny > ( ) ) ( set_o) ;
559
565
assert_eq ! ( cast!( set_a. peek( ) , ClassWrapper <i32 >) , o) ;
560
566
let multiset_o = multiset ! { o, o} ;
561
- let multiset_a = Multiset :: < Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , dyn Any > ( ) ) ( multiset_o) ;
567
+ let multiset_a = Multiset :: < Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , crate :: DynAny > ( ) ) ( multiset_o) ;
562
568
assert_eq ! ( cast!( multiset_a. peek( ) , ClassWrapper <i32 >) , o) ;
563
569
let map_o = map ! [ 1 => o, 2 => o] ;
564
- let map_a = Map :: < i32 , Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , dyn Any > ( ) ) ( map_o) ;
570
+ let map_a = Map :: < i32 , Ptr < ClassWrapper < i32 > > > :: coerce ( upcast :: < ClassWrapper < i32 > , crate :: DynAny > ( ) ) ( map_o) ;
565
571
assert_eq ! ( cast!( map_a. get( & 1 ) , ClassWrapper <i32 >) , o) ;
566
572
deallocate ( o) ;
567
573
}
@@ -594,7 +600,7 @@ mod tests {
594
600
595
601
#[ test]
596
602
fn test_function_wrappers ( ) {
597
- let f: Rc < dyn Fn ( i32 ) -> i32 > = Rc :: new ( |i : i32 | i + 1 ) ;
603
+ let f: Rc < dyn Fn ( i32 ) -> i32 + Send + Sync > = Rc :: new ( |i : i32 | i + 1 ) ;
598
604
let g = f. clone ( ) ;
599
605
let _h = seq ! [ g] ;
600
606
}
@@ -688,10 +694,22 @@ mod tests {
688
694
let count_inner = count. clone ( ) ;
689
695
multiset ! { 1 , 1 , 5 , 7 , 8 }
690
696
. iter ( ) . for_each ( move |_i : u32 | {
691
- let c: i32 = * count_inner. as_ref ( ) . borrow ( ) ;
692
- * count_inner. borrow_mut ( ) = c + 1 ;
697
+ #[ cfg( not( feature = "sync" ) ) ]
698
+ {
699
+ let c: i32 = * count_inner. as_ref ( ) . borrow ( ) ;
700
+ * count_inner. borrow_mut ( ) = c + 1 ;
701
+ }
702
+ #[ cfg( feature = "sync" ) ]
703
+ {
704
+ let mut guard = count_inner. as_ref ( ) . lock ( ) . unwrap ( ) ;
705
+ let c: i32 = * guard;
706
+ * guard = c + 1 ;
707
+ }
693
708
} ) ;
709
+ #[ cfg( not( feature = "sync" ) ) ]
694
710
assert_eq ! ( * count. as_ref( ) . borrow( ) , 5 ) ;
711
+ #[ cfg( feature = "sync" ) ]
712
+ assert_eq ! ( * count. as_ref( ) . lock( ) . unwrap( ) , 5 ) ;
695
713
696
714
let m = map ! [ 1 => 4 , 3 => 6 , 5 => 8 ] ;
697
715
let m2 = m. clone ( ) ;
@@ -748,7 +766,7 @@ mod tests {
748
766
assert_eq ! ( sum, 55 ) ;
749
767
}
750
768
751
- trait SuperTrait : Upcast < dyn Any > + UpcastObject < dyn Any > {
769
+ trait SuperTrait : Upcast < crate :: DynAny > + UpcastObject < crate :: DynAny > {
752
770
}
753
771
754
772
trait NodeRcMutTrait : SuperTrait + Upcast < dyn SuperTrait > + UpcastObject < dyn SuperTrait > {
@@ -767,11 +785,11 @@ mod tests {
767
785
}
768
786
}
769
787
impl SuperTrait for NodeRcMut { }
770
- impl UpcastObject < dyn Any > for NodeRcMut {
771
- UpcastObjectFn ! ( dyn Any ) ;
788
+ impl UpcastObject < crate :: DynAny > for NodeRcMut {
789
+ UpcastObjectFn ! ( crate :: DynAny ) ;
772
790
}
773
- impl Upcast < dyn Any > for NodeRcMut {
774
- UpcastFn ! ( dyn Any ) ;
791
+ impl Upcast < crate :: DynAny > for NodeRcMut {
792
+ UpcastFn ! ( crate :: DynAny ) ;
775
793
}
776
794
impl UpcastObject < dyn NodeRcMutTrait > for NodeRcMut {
777
795
UpcastObjectFn ! ( dyn NodeRcMutTrait ) ;
@@ -798,7 +816,7 @@ mod tests {
798
816
assert_eq ! ( x. as_ref( ) . next. as_ref( ) . val, int!( 42 ) ) ;
799
817
md ! ( rd!( x) . next) . next = Object ( None ) ;
800
818
assert_eq ! ( refcount!( x) , 1 ) ;
801
- let y: Object < dyn Any > = upcast_object :: < _ , _ > ( ) ( x. clone ( ) ) ;
819
+ let y: Object < crate :: DynAny > = upcast_object :: < _ , _ > ( ) ( x. clone ( ) ) ;
802
820
assert_eq ! ( refcount!( x) , 2 ) ;
803
821
let z: Object < dyn NodeRcMutTrait > = upcast_object :: < _ , _ > ( ) ( x. clone ( ) ) ;
804
822
assert_eq ! ( refcount!( x) , 3 ) ;
@@ -834,7 +852,7 @@ mod tests {
834
852
}
835
853
assert_eq ! ( refcount!( x) , previous_count) ;
836
854
837
- let objects: Set < Object < dyn :: std :: any :: Any > > = crate :: set!{ y. clone( ) , cast_any_object!( x. clone( ) ) } ;
855
+ let objects: Set < Object < crate :: DynAny > > = crate :: set!{ y. clone( ) , cast_any_object!( x. clone( ) ) } ;
838
856
assert_eq ! ( objects. cardinality_usize( ) , 1 ) ;
839
857
test_dafny_type ( a. clone ( ) ) ;
840
858
}
@@ -850,8 +868,8 @@ mod tests {
850
868
}
851
869
}
852
870
impl NodeRcMutTrait for NodeRawMut { }
853
- UpcastDefObject ! ( NodeRawMut , dyn NodeRcMutTrait , dyn SuperTrait , dyn Any ) ;
854
- UpcastDef ! ( NodeRawMut , dyn NodeRcMutTrait , dyn SuperTrait , dyn Any ) ;
871
+ UpcastDefObject ! ( NodeRawMut , dyn NodeRcMutTrait , dyn SuperTrait , crate :: DynAny ) ;
872
+ UpcastDef ! ( NodeRawMut , dyn NodeRcMutTrait , dyn SuperTrait , crate :: DynAny ) ;
855
873
856
874
impl SuperTrait for NodeRawMut { }
857
875
@@ -863,7 +881,7 @@ mod tests {
863
881
modify ! ( x. clone( ) ) . next = x. clone ( ) ;
864
882
assert_eq ! ( read!( read!( x. clone( ) ) . next. clone( ) ) . val, int!( 42 ) ) ;
865
883
modify ! ( read!( x. clone( ) ) . next. clone( ) ) . next = Ptr :: null ( ) ;
866
- let y: Ptr < dyn Any > = upcast :: < _ , _ > ( ) ( x) ;
884
+ let y: Ptr < crate :: DynAny > = upcast :: < _ , _ > ( ) ( x) ;
867
885
assert ! ( y. is_instance_of:: <NodeRawMut >( ) ) ;
868
886
assert ! ( !y. is_instance_of:: <NodeRcMut >( ) ) ;
869
887
let z: Ptr < dyn NodeRcMutTrait > = upcast :: < _ , _ > ( ) ( x) ;
@@ -907,13 +925,13 @@ mod tests {
907
925
pub message : String ,
908
926
}
909
927
910
- crate :: UpcastDefObject !( InternalOpaqueError , dyn Any ) ;
928
+ crate :: UpcastDefObject !( InternalOpaqueError , crate :: DynAny ) ;
911
929
912
930
#[ test]
913
931
fn test_native_string_upcast ( ) {
914
932
let s = InternalOpaqueError { message : "Hello, World!" . to_string ( ) } ;
915
933
let o: Object < InternalOpaqueError > = Object :: new ( s) ;
916
- let n: Object < dyn :: std :: any :: Any > = upcast_object :: < InternalOpaqueError , dyn :: std :: any :: Any > ( ) ( o) ;
934
+ let n: Object < crate :: DynAny > = upcast_object :: < InternalOpaqueError , crate :: DynAny > ( ) ( o) ;
917
935
let x = cast_object ! ( n, InternalOpaqueError ) ;
918
936
let s2 = crate :: dafny_runtime_conversions:: object:: dafny_class_to_struct ( x) ;
919
937
assert_eq ! ( s2. message, "Hello, World!" ) ;
@@ -923,7 +941,7 @@ mod tests {
923
941
fn test_native_string_upcast_raw ( ) {
924
942
let message = "Hello, World!" . to_string ( ) ;
925
943
let object = Object :: new ( message. clone ( ) ) ;
926
- let object_any: Object < dyn Any > = UpcastObject :: < dyn Any > :: upcast ( object. as_ref ( ) ) ;
944
+ let object_any: Object < crate :: DynAny > = UpcastObject :: < crate :: DynAny > :: upcast ( object. as_ref ( ) ) ;
927
945
let resulting_message = format ! ( "{:?}" , object_any) ;
928
946
assert_eq ! ( resulting_message, message) ;
929
947
}
0 commit comments