File tree 1 file changed +52
-0
lines changed
validation-test/SILOptimizer 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