Skip to content

Commit 5c94872

Browse files
committed
[CursorInfo] References should not include shadowed declarations
Cursor info on a reference to a decl that shadows other decls should not include those decls in the secondary symbols. They should only be added on the decl itself, if that particular location is *also* the reference to the shadowed decl (eg. in a shorthand if let or closure capture). Resolves rdar://96305891.
1 parent fc24be2 commit 5c94872

File tree

3 files changed

+115
-65
lines changed

3 files changed

+115
-65
lines changed

lib/IDE/IDERequests.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,18 @@ ResolvedCursorInfo CursorInfoResolver::resolve(SourceLoc Loc) {
172172
assert(Loc.isValid());
173173
LocToResolve = Loc;
174174
CursorInfo.Loc = Loc;
175+
175176
walk(SrcFile);
176-
auto ShorthandShadowedDecl = ShorthandShadowedDecls[CursorInfo.ValueD];
177-
while (ShorthandShadowedDecl) {
178-
CursorInfo.ShorthandShadowedDecls.push_back(ShorthandShadowedDecl);
179-
ShorthandShadowedDecl = ShorthandShadowedDecls[ShorthandShadowedDecl];
177+
178+
if (!CursorInfo.IsRef) {
179+
// If we have a definition, add any decls that it potentially shadows
180+
auto ShorthandShadowedDecl = ShorthandShadowedDecls[CursorInfo.ValueD];
181+
while (ShorthandShadowedDecl) {
182+
CursorInfo.ShorthandShadowedDecls.push_back(ShorthandShadowedDecl);
183+
ShorthandShadowedDecl = ShorthandShadowedDecls[ShorthandShadowedDecl];
184+
}
180185
}
186+
181187
return CursorInfo;
182188
}
183189

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,97 @@
11
func takeClosure(_ closure: () -> Void) {}
22

3+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):13 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_PARAM -D#FUNCSTART=%(line+1)
34
func simple(bar: Int) {
5+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):18 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_CAPTURE -D#FUNCSTART=%(line-1)
46
takeClosure { [bar] in
7+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_REF -D#FUNCSTART=%(line-3)
58
print(bar)
69
}
710
}
811

9-
// RUN: %sourcekitd-test -req=cursor -pos=3:13 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_PARAM
10-
// SIMPLE_PARAM: source.lang.swift.decl.var.parameter (3:13-3:16)
12+
// SIMPLE_PARAM: source.lang.swift.decl.var.parameter ([[#FUNCSTART]]:13-[[#FUNCSTART]]:16)
1113
// SIMPLE_PARAM: SECONDARY SYMBOLS BEGIN
1214
// There should be no secondary symbols
1315
// SIMPLE_PARAM-NEXT: SECONDARY SYMBOLS END
1416

15-
// RUN: %sourcekitd-test -req=cursor -pos=4:18 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_CAPTURE
16-
// SIMPLE_CAPTURE: source.lang.swift.decl.var.local (4:18-4:21)
17+
// SIMPLE_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+2]]:18-[[#FUNCSTART+2]]:21)
1718
// SIMPLE_CAPTURE: SECONDARY SYMBOLS BEGIN
18-
// SIMPLE_CAPTURE: source.lang.swift.ref.var.local (3:13-3:16)
19+
// SIMPLE_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART]]:13-[[#FUNCSTART]]:16)
1920

20-
// RUN: %sourcekitd-test -req=cursor -pos=5:11 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_REF
21-
// SIMPLE_REF: source.lang.swift.ref.var.local (4:18-4:21)
21+
// SIMPLE_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+2]]:18-[[#FUNCSTART+2]]:21)
2222
// SIMPLE_REF: SECONDARY SYMBOLS BEGIN
23-
// SIMPLE_REF: source.lang.swift.ref.var.local (3:13-3:16)
23+
// SIMPLE_REF-NEXT: SECONDARY SYMBOLS END
2424

2525
func doubleNested(bar: Int) {
26+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):18 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_FIRST_CAPTURE -D#FUNCSTART=%(line-1)
2627
takeClosure { [bar] in
28+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):20 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_SECOND_CAPTURE -D#FUNCSTART=%(line-3)
2729
takeClosure { [bar] in
30+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):13 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_REF -D#FUNCSTART=%(line-5)
2831
print(bar)
2932
}
3033
}
3134
}
3235

33-
// RUN: %sourcekitd-test -req=cursor -pos=26:18 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_FIRST_CAPTURE
34-
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.decl.var.local (26:18-26:21)
36+
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+2]]:18-[[#FUNCSTART+2]]:21)
3537
// DOUBLE_NESTED_FIRST_CAPTURE: SECONDARY SYMBOLS BEGIN
36-
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.ref.var.local (25:19-25:22)
38+
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART]]:19-[[#FUNCSTART]]:22)
3739

38-
// RUN: %sourcekitd-test -req=cursor -pos=27:20 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_SECOND_CAPTURE
39-
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.decl.var.local (27:20-27:23)
40+
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+4]]:20-[[#FUNCSTART+4]]:23)
4041
// DOUBLE_NESTED_SECOND_CAPTURE: SECONDARY SYMBOLS BEGIN
41-
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local (26:18-26:21)
42-
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local (25:19-25:22)
42+
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART+2]]:18-[[#FUNCSTART+2]]:21)
43+
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART]]:19-[[#FUNCSTART]]:22)
4344

44-
// RUN: %sourcekitd-test -req=cursor -pos=28:13 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_REF
45-
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local (27:20-27:23)
45+
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+4]]:20-[[#FUNCSTART+4]]:23)
4646
// DOUBLE_NESTED_REF: SECONDARY SYMBOLS BEGIN
47-
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local (26:18-26:21)
48-
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local (25:19-25:22)
47+
// DOUBLE_NESTED_REF-NEXT: SECONDARY SYMBOLS END
4948

5049
// Make sure we don't report secondary symbols if the variable is captured explicitly using '='
5150
func explicitCapture(bar: Int) {
51+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+2):18 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE -D#FUNCSTART=%(line-1)
52+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):24 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE_PARAM_REF -D#FUNCSTART=%(line-2)
5253
takeClosure { [bar = bar] in
54+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE_REF -D#FUNCSTART=%(line-4)
5355
print(bar)
5456
}
5557
}
5658

57-
// RUN: %sourcekitd-test -req=cursor -pos=53:11 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE_REF
58-
// EXPLICIT_CAPTURE_REF: source.lang.swift.ref.var.local (52:18-52:21)
59+
// EXPLICIT_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+3]]:18-[[#FUNCSTART+3]]:21)
60+
// EXPLICIT_CAPTURE: SECONDARY SYMBOLS BEGIN
61+
// EXPLICIT_CAPTURE-NEXT: SECONDARY SYMBOLS END
62+
63+
// EXPLICIT_CAPTURE_PARAM_REF: source.lang.swift.ref.var.local ([[#FUNCSTART]]:22-[[#FUNCSTART]]:25)
64+
// EXPLICIT_CAPTURE_PARAM_REF: SECONDARY SYMBOLS BEGIN
65+
// EXPLICIT_CAPTURE_PARAM_REF-NEXT: SECONDARY SYMBOLS END
66+
67+
// EXPLICIT_CAPTURE_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+3]]:18-[[#FUNCSTART+3]]:21)
5968
// EXPLICIT_CAPTURE_REF: SECONDARY SYMBOLS BEGIN
6069
// There should be no secondary symbols
6170
// EXPLICIT_CAPTURE_REF-NEXT: SECONDARY SYMBOLS END
6271

6372
func multipleCaptures(bar: Int, baz: Int) {
73+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+2):18 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_CAPTURES_BAR -D#FUNCSTART=%(line-1)
74+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):23 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_CAPTURES_BAZ -D#FUNCSTART=%(line-2)
6475
takeClosure { [bar, baz] in
76+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_CAPTURES_BAR_REF -D#FUNCSTART=%(line-4)
6577
print(bar)
78+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_CAPTURES_BAZ_REF -D#FUNCSTART=%(line-6)
6679
print(baz)
6780
}
6881
}
6982

70-
// RUN: %sourcekitd-test -req=cursor -pos=65:11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_CAPTURES_BAR
71-
// MULTIPLE_CAPTURES_BAR: source.lang.swift.ref.var.local (64:18-64:21)
83+
// MULTIPLE_CAPTURES_BAR: source.lang.swift.decl.var.local ([[#FUNCSTART+3]]:18-[[#FUNCSTART+3]]:21)
7284
// MULTIPLE_CAPTURES_BAR: SECONDARY SYMBOLS BEGIN
73-
// MULTIPLE_CAPTURES_BAR.lang.swift.ref.var.local (63:23-63:26)
85+
// MULTIPLE_CAPTURES_BAR: source.lang.swift.ref.var.local ([[#FUNCSTART]]:23-[[#FUNCSTART]]:26)
7486

75-
// RUN: %sourcekitd-test -req=cursor -pos=66:11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_CAPTURES_BAZ
76-
// MULTIPLE_CAPTURES_BAZ: source.lang.swift.ref.var.local (64:23-64:26)
87+
// MULTIPLE_CAPTURES_BAZ: source.lang.swift.decl.var.local ([[#FUNCSTART+3]]:23-[[#FUNCSTART+3]]:26)
7788
// MULTIPLE_CAPTURES_BAZ: SECONDARY SYMBOLS BEGIN
78-
// MULTIPLE_CAPTURES_BAZ.lang.swift.ref.var.local (63:33-63:36)
89+
// MULTIPLE_CAPTURES_BAZ: source.lang.swift.ref.var.local ([[#FUNCSTART]]:33-[[#FUNCSTART]]:36)
90+
91+
// MULTIPLE_CAPTURES_BAR_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+3]]:18-[[#FUNCSTART+3]]:21)
92+
// MULTIPLE_CAPTURES_BAR_REF: SECONDARY SYMBOLS BEGIN
93+
// MULTIPLE_CAPTURES_BAR_REF-NEXT: SECONDARY SYMBOLS END
94+
95+
// MULTIPLE_CAPTURES_BAZ_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+3]]:23-[[#FUNCSTART+3]]:26)
96+
// MULTIPLE_CAPTURES_BAZ_REF: SECONDARY SYMBOLS BEGIN
97+
// MULTIPLE_CAPTURES_BAZ_REF-NEXT: SECONDARY SYMBOLS END
Lines changed: 59 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,133 @@
1+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):13 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_PARAM -D#FUNCSTART=%(line+1)
12
func simple(bar: Int?) {
3+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):10 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_CAPTURE -D#FUNCSTART=%(line-1)
24
if let bar {
5+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_REF -D#FUNCSTART=%(line-3)
36
print(bar)
47
}
58
}
69

7-
// RUN: %sourcekitd-test -req=cursor -pos=1:13 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_PARAM
8-
// SIMPLE_PARAM: source.lang.swift.decl.var.parameter (1:13-1:16)
10+
// SIMPLE_PARAM: source.lang.swift.decl.var.parameter ([[#FUNCSTART]]:13-[[#FUNCSTART]]:16)
911
// SIMPLE_PARAM: Int
1012
// SIMPLE_PARAM: SECONDARY SYMBOLS BEGIN
1113
// There should be no secondary symbols
1214
// SIMPLE_PARAM-NEXT: SECONDARY SYMBOLS END
1315

14-
// RUN: %sourcekitd-test -req=cursor -pos=2:10 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_CAPTURE
15-
// SIMPLE_CAPTURE: source.lang.swift.decl.var.local (2:10-2:13)
16+
// SIMPLE_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+2]]:10-[[#FUNCSTART+2]]:13)
1617
// SIMPLE_CAPTURE: Int
1718
// SIMPLE_CAPTURE: SECONDARY SYMBOLS BEGIN
18-
// SIMPLE_CAPTURE: source.lang.swift.ref.var.local (1:13-1:16)
19+
// SIMPLE_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART]]:13-[[#FUNCSTART]]:16)
1920
// SIMPLE_CAPTURE: Int?
2021

21-
// RUN: %sourcekitd-test -req=cursor -pos=3:11 %s -- %s | %FileCheck %s --check-prefix=SIMPLE_REF
22-
// SIMPLE_REF: source.lang.swift.ref.var.local (2:10-2:13)
22+
// SIMPLE_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+2]]:10-[[#FUNCSTART+2]]:13)
2323
// SIMPLE_REF: Int
2424
// SIMPLE_REF: SECONDARY SYMBOLS BEGIN
25-
// SIMPLE_REF: source.lang.swift.ref.var.local (1:13-1:16)
26-
// SIMPLE_REF: Int?
25+
// SIMPLE_REF-NEXT: SECONDARY SYMBOLS END
2726

2827
func doubleNested(bar: Int??) {
28+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):10 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_FIRST_CAPTURE -D#FUNCSTART=%(line-1)
2929
if let bar {
30+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):12 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_SECOND_CAPTURE -D#FUNCSTART=%(line-3)
3031
if let bar {
32+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):13 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_REF -D#FUNCSTART=%(line-5)
3133
print(bar)
3234
}
3335
}
3436
}
3537

36-
// RUN: %sourcekitd-test -req=cursor -pos=29:10 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_FIRST_CAPTURE
37-
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.decl.var.local (29:10-29:13)
38+
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+2]]:10-[[#FUNCSTART+2]]:13)
3839
// DOUBLE_NESTED_FIRST_CAPTURE: Int?
3940
// DOUBLE_NESTED_FIRST_CAPTURE: SECONDARY SYMBOLS BEGIN
40-
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.ref.var.local (28:19-28:22)
41+
// DOUBLE_NESTED_FIRST_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART]]:19-[[#FUNCSTART]]:22)
4142
// DOUBLE_NESTED_FIRST_CAPTURE: Int??
4243

43-
// RUN: %sourcekitd-test -req=cursor -pos=30:12 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_SECOND_CAPTURE
44-
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.decl.var.local (30:12-30:15)
44+
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+4]]:12-[[#FUNCSTART+4]]:15)
4545
// DOUBLE_NESTED_SECOND_CAPTURE: Int
4646
// DOUBLE_NESTED_SECOND_CAPTURE: SECONDARY SYMBOLS BEGIN
47-
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local (29:10-29:13)
47+
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART+2]]:10-[[#FUNCSTART+2]]:13)
4848
// DOUBLE_NESTED_SECOND_CAPTURE: Int?
49-
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local (28:19-28:22)
49+
// DOUBLE_NESTED_SECOND_CAPTURE: source.lang.swift.ref.var.local ([[#FUNCSTART]]:19-[[#FUNCSTART]]:22)
5050
// DOUBLE_NESTED_SECOND_CAPTURE: Int??
5151

52-
// RUN: %sourcekitd-test -req=cursor -pos=31:13 %s -- %s | %FileCheck %s --check-prefix=DOUBLE_NESTED_REF
53-
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local (30:12-30:15)
52+
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+4]]:12-[[#FUNCSTART+4]]:15)
5453
// DOUBLE_NESTED_REF: Int
5554
// DOUBLE_NESTED_REF: SECONDARY SYMBOLS BEGIN
56-
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local (29:10-29:13)
57-
// DOUBLE_NESTED_REF: Int?
58-
// DOUBLE_NESTED_REF: source.lang.swift.ref.var.local (28:19-28:22)
59-
// DOUBLE_NESTED_REF: Int??
55+
// DOUBLE_NESTED_REF-NEXT: SECONDARY SYMBOLS END
6056

6157
// Make sure we don't report secondary symbols if the variable is captured explicitly using '='
6258
func explicitCapture(bar: Int?) {
59+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+2):10 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE -D#FUNCSTART=%(line-1)
60+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):16 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE_PARAM_REF -D#FUNCSTART=%(line-2)
6361
if let bar = bar {
62+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE_REF -D#FUNCSTART=%(line-4)
6463
print(bar)
6564
}
6665
}
6766

68-
// RUN: %sourcekitd-test -req=cursor -pos=64:11 %s -- %s | %FileCheck %s --check-prefix=EXPLICIT_CAPTURE_REF
69-
// EXPLICIT_CAPTURE_REF: source.lang.swift.ref.var.local (63:10-63:13)
67+
// EXPLICIT_CAPTURE: source.lang.swift.decl.var.local ([[#FUNCSTART+3]]:10-[[#FUNCSTART+3]]:13)
68+
// EXPLICIT_CAPTURE: Int
69+
// EXPLICIT_CAPTURE: SECONDARY SYMBOLS BEGIN
70+
// EXPLICIT_CAPTURE-NEXT: SECONDARY SYMBOLS END
71+
72+
// EXPLICIT_CAPTURE_PARAM_REF: source.lang.swift.ref.var.local ([[#FUNCSTART]]:22-[[#FUNCSTART]]:25)
73+
// EXPLICIT_CAPTURE_PARAM_REF: Int?
74+
// EXPLICIT_CAPTURE_PARAM_REF: SECONDARY SYMBOLS BEGIN
75+
// EXPLICIT_CAPTURE_PARAM_REF-NEXT: SECONDARY SYMBOLS END
76+
77+
// EXPLICIT_CAPTURE_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+3]]:10-[[#FUNCSTART+3]]:13)
7078
// EXPLICIT_CAPTURE_REF: Int
7179
// EXPLICIT_CAPTURE_REF: SECONDARY SYMBOLS BEGIN
72-
// There should be no secondary symbols
7380
// EXPLICIT_CAPTURE_REF-NEXT: SECONDARY SYMBOLS END
7481

7582
func multipleShorthand(bar: Int?, baz: Int?) {
83+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+2):10 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_SHORTHAND_BAR -D#FUNCSTART=%(line-1)
84+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):19 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_SHORTHAND_BAZ -D#FUNCSTART=%(line-2)
7685
if let bar, let baz {
86+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_SHORTHAND_BAR_REF -D#FUNCSTART=%(line-4)
7787
print(bar)
88+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_SHORTHAND_BAZ_REF -D#FUNCSTART=%(line-6)
7889
print(baz)
7990
}
8091
}
8192

82-
// RUN: %sourcekitd-test -req=cursor -pos=77:11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_SHORTHAND_BAR
83-
// MULTIPLE_SHORTHAND_BAR: source.lang.swift.ref.var.local (76:10-76:13)
93+
// MULTIPLE_SHORTHAND_BAR: source.lang.swift.decl.var.local ([[#FUNCSTART+3]]:10-[[#FUNCSTART+3]]:13)
8494
// MULTIPLE_SHORTHAND_BAR: Int
8595
// MULTIPLE_SHORTHAND_BAR: SECONDARY SYMBOLS BEGIN
86-
// MULTIPLE_SHORTHAND_BAR.lang.swift.ref.var.local (75:23-75:26)
96+
// MULTIPLE_SHORTHAND_BAR.lang.swift.ref.var.local ([[#FUNCSTART]]:24-[[#FUNCSTART]]:27)
8797
// MULTIPLE_SHORTHAND_BAR: Int?
8898

89-
// RUN: %sourcekitd-test -req=cursor -pos=78:11 %s -- %s | %FileCheck %s --check-prefix=MULTIPLE_SHORTHAND_BAZ
90-
// MULTIPLE_SHORTHAND_BAZ: source.lang.swift.ref.var.local (76:19-76:22)
99+
// MULTIPLE_SHORTHAND_BAZ: source.lang.swift.decl.var.local ([[#FUNCSTART+3]]:19-[[#FUNCSTART+3]]:22)
91100
// MULTIPLE_SHORTHAND_BAZ: Int
92101
// MULTIPLE_SHORTHAND_BAZ: SECONDARY SYMBOLS BEGIN
93-
// MULTIPLE_SHORTHAND_BAZ.lang.swift.ref.var.local (63:33-63:36)
102+
// MULTIPLE_SHORTHAND_BAZ.lang.swift.ref.var.local ([[#FUNCSTART]]:35-[[#FUNCSTART]]:38)
94103
// MULTIPLE_SHORTHAND_BAZ: Int?
95104

105+
// MULTIPLE_SHORTHAND_BAR_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+3]]:10-[[#FUNCSTART+3]]:13)
106+
// MULTIPLE_SHORTHAND_BAR_REF: Int
107+
// MULTIPLE_SHORTHAND_BAR_REF: SECONDARY SYMBOLS BEGIN
108+
// MULTIPLE_SHORTHAND_BAR_REF-NEXT: SECONDARY SYMBOLS END
109+
110+
// MULTIPLE_SHORTHAND_BAZ_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+3]]:19-[[#FUNCSTART+3]]:22)
111+
// MULTIPLE_SHORTHAND_BAZ_REF: Int
112+
// MULTIPLE_SHORTHAND_BAZ_REF: SECONDARY SYMBOLS BEGIN
113+
// MULTIPLE_SHORTHAND_BAZ_REF-NEXT: SECONDARY SYMBOLS END
114+
96115
func guardLet(bar: Int?) {
116+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):13 %s -- %s | %FileCheck %s --check-prefix=GUARD_LET -D#FUNCSTART=%(line-1)
97117
guard let bar else {
98118
return
99119
}
120+
// RUN: %sourcekitd-test -req=cursor -pos=%(line+1):9 %s -- %s | %FileCheck %s --check-prefix=GUARD_LET_REF -D#FUNCSTART=%(line-5)
100121
print(bar)
101122
}
102123

103-
// RUN: %sourcekitd-test -req=cursor -pos=100:9 %s -- %s | %FileCheck %s --check-prefix=GUARD_LET
104-
// GUARD_LET: source.lang.swift.ref.var.local (97:13-97:16)
124+
// GUARD_LET: source.lang.swift.decl.var.local ([[#FUNCSTART+2]]:13-[[#FUNCSTART+2]]:16)
105125
// GUARD_LET: Int
106126
// GUARD_LET: SECONDARY SYMBOLS BEGIN
107-
// GUARD_LET.lang.swift.ref.var.local (96:15-96:18)
127+
// GUARD_LET: source.lang.swift.ref.var.local ([[#FUNCSTART]]:15-[[#FUNCSTART]]:18)
108128
// GUARD_LET: Int?
129+
130+
// GUARD_LET_REF: source.lang.swift.ref.var.local ([[#FUNCSTART+2]]:13-[[#FUNCSTART+2]]:16)
131+
// GUARD_LET_REF: Int
132+
// GUARD_LET_REF: SECONDARY SYMBOLS BEGIN
133+
// GUARD_LET_REF-NEXT: SECONDARY SYMBOLS END

0 commit comments

Comments
 (0)