@@ -53,6 +53,8 @@ public struct NonTrivialStruct {
5353 var copyableK = CopyableKlass ( )
5454 var nonTrivialStruct2 = NonTrivialStruct2 ( )
5555 var nonTrivialCopyableStruct = NonTrivialCopyableStruct ( )
56+
57+ var computedCopyableK : CopyableKlass { CopyableKlass ( ) }
5658}
5759
5860@_moveOnly
@@ -67,6 +69,7 @@ public struct NonTrivialCopyableStruct {
6769
6870public struct NonTrivialCopyableStruct2 {
6971 var copyableKlass = CopyableKlass ( )
72+ var computedCopyableKlass : CopyableKlass { CopyableKlass ( ) }
7073}
7174
7275@_moveOnly
@@ -3475,6 +3478,49 @@ func copyableStructsInMoveOnlyStructNonConsuming() {
34753478 borrowVal ( a. nonTrivialCopyableStruct. nonTrivialCopyableStruct2. copyableKlass)
34763479}
34773480
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+
34783524///////////////////////////
34793525// Field Sensitive Tests //
34803526///////////////////////////
0 commit comments