Skip to content

Commit 42f0531

Browse files
committed
[move-only] Add some computed property test cases on classes and structs.
1 parent 8ced252 commit 42f0531

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

test/SILOptimizer/moveonly_addresschecker_diagnostics.swift

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

6870
public 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

Comments
 (0)