@@ -53,6 +53,8 @@ public struct NonTrivialStruct {
53
53
var copyableK = CopyableKlass ( )
54
54
var nonTrivialStruct2 = NonTrivialStruct2 ( )
55
55
var nonTrivialCopyableStruct = NonTrivialCopyableStruct ( )
56
+
57
+ var computedCopyableK : CopyableKlass { CopyableKlass ( ) }
56
58
}
57
59
58
60
@_moveOnly
@@ -67,6 +69,7 @@ public struct NonTrivialCopyableStruct {
67
69
68
70
public struct NonTrivialCopyableStruct2 {
69
71
var copyableKlass = CopyableKlass ( )
72
+ var computedCopyableKlass : CopyableKlass { CopyableKlass ( ) }
70
73
}
71
74
72
75
@_moveOnly
@@ -3475,6 +3478,49 @@ func copyableStructsInMoveOnlyStructNonConsuming() {
3475
3478
borrowVal ( a. nonTrivialCopyableStruct. nonTrivialCopyableStruct2. copyableKlass)
3476
3479
}
3477
3480
3481
+ func computedCopyableKlassInAMoveOnlyStruct( ) {
3482
+ var a = NonTrivialStruct ( )
3483
+ a = NonTrivialStruct ( )
3484
+ borrowVal ( a. computedCopyableK)
3485
+ consumeVal ( a. computedCopyableK)
3486
+ }
3487
+
3488
+ // This shouldn't error since we are consuming a copyable type.
3489
+ func computedCopyableKlassInAMoveOnlyStruct2( ) {
3490
+ var a = NonTrivialStruct ( )
3491
+ a = NonTrivialStruct ( )
3492
+ borrowVal ( a. computedCopyableK)
3493
+ consumeVal ( a. computedCopyableK)
3494
+ consumeVal ( a. computedCopyableK)
3495
+ }
3496
+
3497
+ // This shouldn't error since we are working with a copyable type.
3498
+ func computedCopyableKlassInAMoveOnlyStruct3( ) {
3499
+ var a = NonTrivialStruct ( )
3500
+ a = NonTrivialStruct ( )
3501
+ borrowVal ( a. computedCopyableK)
3502
+ consumeVal ( a. computedCopyableK)
3503
+ borrowVal ( a. computedCopyableK)
3504
+ }
3505
+
3506
+ // This used to error, but no longer errors since we are using a true field
3507
+ // sensitive model.
3508
+ func computedCopyableKlassInAMoveOnlyStruct4( ) {
3509
+ var a = NonTrivialStruct ( )
3510
+ a = NonTrivialStruct ( )
3511
+ borrowVal ( a. computedCopyableK)
3512
+ consumeVal ( a. computedCopyableK)
3513
+ borrowVal ( a. nonTrivialStruct2)
3514
+ }
3515
+
3516
+ func computedCopyableStructsInMoveOnlyStructNonConsuming( ) {
3517
+ var a = NonTrivialStruct ( )
3518
+ a = NonTrivialStruct ( )
3519
+ borrowVal ( a)
3520
+ borrowVal ( a. computedCopyableK)
3521
+ borrowVal ( a. nonTrivialCopyableStruct. nonTrivialCopyableStruct2. computedCopyableKlass)
3522
+ }
3523
+
3478
3524
///////////////////////////
3479
3525
// Field Sensitive Tests //
3480
3526
///////////////////////////
0 commit comments