@@ -15,6 +15,14 @@ Check that _type_ and value of `x` and `y` are equal.
15
15
@test ! (1.0 == ₜ 1 )
16
16
end
17
17
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
+
18
26
@testset " setindex" begin
19
27
arr = [1 ,2 ,3 ]
20
28
@test_throws MethodError Base. setindex (arr, 10 , 1 )
32
40
@test d == Dict (:a => 1 , :b => 2 )
33
41
@test Accessors. setindex (d, 30 , " c" ) == ₜ Dict (:a => 1 , :b => 2 , " c" => 30 )
34
42
@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 ))
35
52
end
36
53
37
54
end
0 commit comments