@@ -15,6 +15,14 @@ Check that _type_ and value of `x` and `y` are equal.
1515 @test ! (1.0 == ₜ 1 )
1616end
1717
18+ function ref_alloc_test ()
19+ ref = Ref ((; a = 10 , b = 0x0001 , c = (; aa = 300 )))
20+ ref2 = Accessors. setindex (ref, (; a = 10 , b = ref[]. b - 1 , c = (; aa = 300 )))
21+ ref3 = Accessors. setindex (ref, ref2[])
22+
23+ ref3[]
24+ end
25+
1826@testset " setindex" begin
1927 arr = [1 ,2 ,3 ]
2028 @test_throws MethodError Base. setindex (arr, 10 , 1 )
3240 @test d == Dict (:a => 1 , :b => 2 )
3341 @test Accessors. setindex (d, 30 , " c" ) == ₜ Dict (:a => 1 , :b => 2 , " c" => 30 )
3442 @test Accessors. setindex (d, 10.0 , :a ) == ₜ Dict (:a => 10.0 , :b => 2.0 )
43+
44+ ref = Ref ((; a = 10 , b = 0x0001 , c = (; aa = 300 )))
45+ @test @set (ref[]. a = 90 )[] == Ref ((; a = 90 , b = 0x0001 , c = (; aa = 300 )))[]
46+ @test @set (ref[]. b = Bool (ref[]. b))[] == Ref ((; a = 10 , b = true , c = (; aa = 300 )))[]
47+ @test @set (ref[]. c. aa = 3 )[] == Ref ((; a = 10 , b = 0x0001 , c = (; aa = 3 )))[]
48+
49+ local val
50+ @test @allocated (val = ref_alloc_test ()) == 0
51+ @test val == (; a = 10 , b = 0x0000 , c = (; aa = 300 ))
3552end
3653
3754end
0 commit comments