Skip to content

Commit d6d7f00

Browse files
Merge pull request #72248 from nate-chandler/gh72055
[Test] Add regression test.
2 parents 675fda3 + d8a9c42 commit d6d7f00

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// RUN: %target-swift-frontend -emit-sil -verify %s
2+
3+
struct PinnedInfo {
4+
var hasPinnedCells: Bool {
5+
return !allPins.isEmpty
6+
}
7+
8+
var allPins: ContiguousArray<Int>
9+
10+
init(allPins: ContiguousArray<Int> = []) {
11+
self.allPins = allPins
12+
}
13+
}
14+
15+
enum ModelState: Hashable, CaseIterable {
16+
case initial
17+
case modified
18+
}
19+
20+
struct Storage<Model> {
21+
var initial: Model?
22+
var modified: Model?
23+
24+
mutating func setStorage(_ storage: Model, at state: ModelState) {
25+
switch state {
26+
case .initial:
27+
initial = storage
28+
case .modified:
29+
modified = storage
30+
}
31+
}
32+
}
33+
34+
func test() {
35+
var storagePinInfo = Storage<PinnedInfo>()
36+
var storageAllPins = Storage<Array<Int>>()
37+
38+
var pinInfo = PinnedInfo(allPins: []) // expected-warning{{variable 'pinInfo' was never mutated; consider changing to 'let' constant}}
39+
var allPins = Array(repeating: 0, count: 100) // expected-warning{{variable 'allPins' was never mutated; consider changing to 'let' constant}}
40+
41+
storagePinInfo.setStorage(consume pinInfo, at: .initial)
42+
storageAllPins.setStorage(consume allPins, at: .initial)
43+
}
44+
45+
var storagePinInfo = Storage<PinnedInfo>()
46+
var storageAllPins = Storage<Array<Int>>()
47+
48+
var pinInfo = PinnedInfo(allPins: [])
49+
var allPins = Array(repeating: 0, count: 100)
50+
51+
storagePinInfo.setStorage(consume pinInfo, at: .initial) // expected-error{{'consume' cannot be applied to globals}}
52+
storageAllPins.setStorage(consume allPins, at: .initial) // expected-error{{'consume' cannot be applied to globals}}

0 commit comments

Comments
 (0)