@@ -17,13 +17,37 @@ func foo2() {
17
17
print ( b + c)
18
18
}
19
19
20
+ struct S1 {
21
+ var a = 3
22
+ func foo( ) -> Int { return 0 }
23
+ mutating func increment( ) -> S1 {
24
+ a = a + 1
25
+ return self
26
+ }
27
+ }
28
+
29
+ func foo3( s: inout S1 ) -> Int {
30
+ let b = s. a
31
+ let c = s. foo ( ) + b
32
+ s = s. increment ( )
33
+ return c + b
34
+ }
35
+
36
+ func foo4( s: S1 ) -> Int {
37
+ let b = s. a
38
+ let c = s. foo ( ) + b
39
+ return c + b
40
+ }
41
+
20
42
// RUN: %target-swift-ide-test -range -pos=8:1 -end-pos 8:32 -source-filename %s | %FileCheck %s -check-prefix=CHECK1
21
43
// RUN: %target-swift-ide-test -range -pos=9:1 -end-pos 9:26 -source-filename %s | %FileCheck %s -check-prefix=CHECK2
22
44
// RUN: %target-swift-ide-test -range -pos=10:1 -end-pos 10:27 -source-filename %s | %FileCheck %s -check-prefix=CHECK3
23
45
// RUN: %target-swift-ide-test -range -pos=3:1 -end-pos=4:26 -source-filename %s | %FileCheck %s -check-prefix=CHECK4
24
46
// RUN: %target-swift-ide-test -range -pos=3:1 -end-pos=5:13 -source-filename %s | %FileCheck %s -check-prefix=CHECK5
25
47
// RUN: %target-swift-ide-test -range -pos=4:1 -end-pos=5:13 -source-filename %s | %FileCheck %s -check-prefix=CHECK6
26
48
// RUN: %target-swift-ide-test -range -pos=14:1 -end-pos=17:15 -source-filename %s | %FileCheck %s -check-prefix=CHECK7
49
+ // RUN: %target-swift-ide-test -range -pos=31:1 -end-pos=33:15 -source-filename %s | %FileCheck %s -check-prefix=CHECK8
50
+ // RUN: %target-swift-ide-test -range -pos=37:1 -end-pos=39:15 -source-filename %s | %FileCheck %s -check-prefix=CHECK9
27
51
28
52
// CHECK1: <Kind>SingleDecl</Kind>
29
53
// CHECK1-NEXT: <Content>func foo1() -> Int { return 0 }</Content>
@@ -43,20 +67,20 @@ func foo2() {
43
67
// CHECK4: <Kind>MultiStatement</Kind>
44
68
// CHECK4-NEXT: <Content>aaa = aaa + 3
45
69
// CHECK4-NEXT: if aaa == 3 { aaa = 4 }</Content>
46
- // CHECK4-NEXT: <Referenced>aaa</Referenced>
70
+ // CHECK4-NEXT: <Referenced>aaa</Referenced><Type>@lvalue Int</Type>
47
71
// CHECK4-NEXT: <end>
48
72
49
73
// CHECK5: <Kind>MultiStatement</Kind>
50
74
// CHECK5-NEXT: <Content>aaa = aaa + 3
51
75
// CHECK5-NEXT: if aaa == 3 { aaa = 4 }
52
76
// CHECK5-NEXT: return aaa</Content>
53
- // CHECK5-NEXT: <Referenced>aaa</Referenced>
77
+ // CHECK5-NEXT: <Referenced>aaa</Referenced><Type>@lvalue Int</Type>
54
78
// CHECK5-NEXT: <end>
55
79
56
80
// CHECK6: <Kind>MultiStatement</Kind>
57
81
// CHECK6-NEXT: if aaa == 3 { aaa = 4 }
58
82
// CHECK6-NEXT: return aaa</Content>
59
- // CHECK6-NEXT: <Referenced>aaa</Referenced>
83
+ // CHECK6-NEXT: <Referenced>aaa</Referenced><Type>@lvalue Int</Type>
60
84
// CHECK6-NEXT: <end>
61
85
62
86
// CHECK7: <Kind>MultiStatement</Kind>
@@ -66,6 +90,29 @@ func foo2() {
66
90
// CHECK7-NEXT: print(b + c)</Content>
67
91
// CHECK7-NEXT: <Declared>b</Declared>
68
92
// CHECK7-NEXT: <Declared>c</Declared>
69
- // CHECK7-NEXT: <Referenced>a</Referenced>
70
- // CHECK7-NEXT: <Referenced>b</Referenced>
93
+ // CHECK7-NEXT: <Referenced>a</Referenced><Type>Int</Type>
94
+ // CHECK7-NEXT: <Referenced>b</Referenced><Type>@lvalue Int</Type>
71
95
// CHECK7-NEXT: <end>
96
+
97
+ // CHECK8: <Kind>MultiStatement</Kind>
98
+ // CHECK8-NEXT: <Content>let c = s.foo() + b
99
+ // CHECK8-NEXT: s = s.increment()
100
+ // CHECK8-NEXT: return c + b</Content>
101
+ // CHECK8-NEXT: <Declared>c</Declared>
102
+ // CHECK8-NEXT: <Referenced>s</Referenced><Type>@lvalue S1</Type>
103
+ // CHECK8-NEXT: <Referenced>foo</Referenced><Type>(S1) -> () -> Int</Type>
104
+ // CHECK8-NEXT: <Referenced>b</Referenced><Type>Int</Type>
105
+ // CHECK8-NEXT: <Referenced>increment</Referenced><Type>(inout S1) -> () -> S1</Type>
106
+ // CHECK8-NEXT: <end>
107
+
108
+ // CHECK9: <Kind>MultiStatement</Kind>
109
+ // CHECK9-NEXT: <Content>let b = s.a
110
+ // CHECK9-NEXT: let c = s.foo() + b
111
+ // CHECK9-NEXT: return c + b</Content>
112
+ // CHECK9-NEXT: <Declared>b</Declared>
113
+ // CHECK9-NEXT: <Declared>c</Declared>
114
+ // CHECK9-NEXT: <Referenced>s</Referenced><Type>S1</Type>
115
+ // CHECK9-NEXT: <Referenced>a</Referenced><Type>Int</Type>
116
+ // CHECK9-NEXT: <Referenced>foo</Referenced><Type>(S1) -> () -> Int</Type>
117
+ // CHECK9-NEXT: <Referenced>b</Referenced><Type>Int</Type>
118
+ // CHECK9-NEXT: <end>
0 commit comments