File tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed
validation-test/SILOptimizer Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change 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}}
You can’t perform that action at this time.
0 commit comments