Skip to content

Commit 3f4519e

Browse files
add Sendable to the allowed attributes in declaration fragments (#80465)
rdar://142903358
1 parent af5ec3e commit 3f4519e

File tree

2 files changed

+195
-105
lines changed

2 files changed

+195
-105
lines changed

lib/SymbolGraphGen/SymbolGraph.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ PrintOptions SymbolGraph::getDeclarationFragmentsPrintOptions() const {
8888
ExcludeAttrs.erase("TypeAttrKind::NoEscape");
8989
ExcludeAttrs.erase("TypeAttrKind::Escaping");
9090
ExcludeAttrs.erase("TypeAttrKind::Inout");
91+
ExcludeAttrs.erase("TypeAttrKind::Sendable");
9192

9293
// Don't allow the following decl attributes:
9394
// These can be large and are already included elsewhere in
Lines changed: 194 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,200 @@
11
// RUN: %empty-directory(%t)
22
// RUN: %target-build-swift %s -module-name Function -emit-module -emit-module-path %t/
33
// RUN: %target-swift-symbolgraph-extract -module-name Function -I %t -pretty-print -output-dir %t
4-
// RUN: %FileCheck %s --input-file %t/Function.symbols.json --match-full-lines --strict-whitespace
4+
// RUN: %FileCheck %s --input-file %t/Function.symbols.json --match-full-lines --strict-whitespace --check-prefix=FOO
5+
// RUN: %FileCheck %s --input-file %t/Function.symbols.json --match-full-lines --strict-whitespace --check-prefix=BAR
56

67
public func foo<S>(f: @escaping () -> (), ext int: Int = 2, s: S) where S: Sequence {}
78

8-
// CHECK-LABEL:{{^ }}"declarationFragments": [
9-
// CHECK: {
10-
// CHECK-NEXT: "kind": "keyword",
11-
// CHECK-NEXT: "spelling": "func"
12-
// CHECK-NEXT: },
13-
// CHECK-NEXT: {
14-
// CHECK-NEXT: "kind": "text",
15-
// CHECK-NEXT: "spelling": " "
16-
// CHECK-NEXT: },
17-
// CHECK-NEXT: {
18-
// CHECK-NEXT: "kind": "identifier",
19-
// CHECK-NEXT: "spelling": "foo"
20-
// CHECK-NEXT: },
21-
// CHECK-NEXT: {
22-
// CHECK-NEXT: "kind": "text",
23-
// CHECK-NEXT: "spelling": "<"
24-
// CHECK-NEXT: },
25-
// CHECK-NEXT: {
26-
// CHECK-NEXT: "kind": "genericParameter",
27-
// CHECK-NEXT: "spelling": "S"
28-
// CHECK-NEXT: },
29-
// CHECK-NEXT: {
30-
// CHECK-NEXT: "kind": "text",
31-
// CHECK-NEXT: "spelling": ">("
32-
// CHECK-NEXT: },
33-
// CHECK-NEXT: {
34-
// CHECK-NEXT: "kind": "externalParam",
35-
// CHECK-NEXT: "spelling": "f"
36-
// CHECK-NEXT: },
37-
// CHECK-NEXT: {
38-
// CHECK-NEXT: "kind": "text",
39-
// CHECK-NEXT: "spelling": ": "
40-
// CHECK-NEXT: },
41-
// CHECK-NEXT: {
42-
// CHECK-NEXT: "kind": "keyword",
43-
// CHECK-NEXT: "spelling": "@escaping"
44-
// CHECK-NEXT: },
45-
// CHECK-NEXT: {
46-
// CHECK-NEXT: "kind": "text",
47-
// CHECK-NEXT: "spelling": " () -> (), "
48-
// CHECK-NEXT: },
49-
// CHECK-NEXT: {
50-
// CHECK-NEXT: "kind": "externalParam",
51-
// CHECK-NEXT: "spelling": "ext"
52-
// CHECK-NEXT: },
53-
// CHECK-NEXT: {
54-
// CHECK-NEXT: "kind": "text",
55-
// CHECK-NEXT: "spelling": " "
56-
// CHECK-NEXT: },
57-
// CHECK-NEXT: {
58-
// CHECK-NEXT: "kind": "internalParam",
59-
// CHECK-NEXT: "spelling": "int"
60-
// CHECK-NEXT: },
61-
// CHECK-NEXT: {
62-
// CHECK-NEXT: "kind": "text",
63-
// CHECK-NEXT: "spelling": ": "
64-
// CHECK-NEXT: },
65-
// CHECK-NEXT: {
66-
// CHECK-NEXT: "kind": "typeIdentifier",
67-
// CHECK-NEXT: "spelling": "Int",
68-
// CHECK-NEXT: "preciseIdentifier": "s:Si"
69-
// CHECK-NEXT: },
70-
// CHECK-NEXT: {
71-
// CHECK-NEXT: "kind": "text",
72-
// CHECK-NEXT: "spelling": " = 2, "
73-
// CHECK-NEXT: },
74-
// CHECK-NEXT: {
75-
// CHECK-NEXT: "kind": "externalParam",
76-
// CHECK-NEXT: "spelling": "s"
77-
// CHECK-NEXT: },
78-
// CHECK-NEXT: {
79-
// CHECK-NEXT: "kind": "text",
80-
// CHECK-NEXT: "spelling": ": "
81-
// CHECK-NEXT: },
82-
// CHECK-NEXT: {
83-
// CHECK-NEXT: "kind": "typeIdentifier",
84-
// CHECK-NEXT: "spelling": "S"
85-
// CHECK-NEXT: },
86-
// CHECK-NEXT: {
87-
// CHECK-NEXT: "kind": "text",
88-
// CHECK-NEXT: "spelling": ") "
89-
// CHECK-NEXT: },
90-
// CHECK-NEXT: {
91-
// CHECK-NEXT: "kind": "keyword",
92-
// CHECK-NEXT: "spelling": "where"
93-
// CHECK-NEXT: },
94-
// CHECK-NEXT: {
95-
// CHECK-NEXT: "kind": "text",
96-
// CHECK-NEXT: "spelling": " "
97-
// CHECK-NEXT: },
98-
// CHECK-NEXT: {
99-
// CHECK-NEXT: "kind": "typeIdentifier",
100-
// CHECK-NEXT: "spelling": "S"
101-
// CHECK-NEXT: },
102-
// CHECK-NEXT: {
103-
// CHECK-NEXT: "kind": "text",
104-
// CHECK-NEXT: "spelling": " : "
105-
// CHECK-NEXT: },
106-
// CHECK-NEXT: {
107-
// CHECK-NEXT: "kind": "typeIdentifier",
108-
// CHECK-NEXT: "spelling": "Sequence",
109-
// CHECK-NEXT: "preciseIdentifier": "s:ST"
110-
// CHECK-NEXT: }
111-
// CHECK-NEXT: ],
9+
// FOO-LABEL: "precise": "s:8Function3foo1f3ext1syyyc_SixtSTRzlF",
10+
// FOO:{{^ }}"declarationFragments": [
11+
// FOO-NEXT: {
12+
// FOO-NEXT: "kind": "keyword",
13+
// FOO-NEXT: "spelling": "func"
14+
// FOO-NEXT: },
15+
// FOO-NEXT: {
16+
// FOO-NEXT: "kind": "text",
17+
// FOO-NEXT: "spelling": " "
18+
// FOO-NEXT: },
19+
// FOO-NEXT: {
20+
// FOO-NEXT: "kind": "identifier",
21+
// FOO-NEXT: "spelling": "foo"
22+
// FOO-NEXT: },
23+
// FOO-NEXT: {
24+
// FOO-NEXT: "kind": "text",
25+
// FOO-NEXT: "spelling": "<"
26+
// FOO-NEXT: },
27+
// FOO-NEXT: {
28+
// FOO-NEXT: "kind": "genericParameter",
29+
// FOO-NEXT: "spelling": "S"
30+
// FOO-NEXT: },
31+
// FOO-NEXT: {
32+
// FOO-NEXT: "kind": "text",
33+
// FOO-NEXT: "spelling": ">("
34+
// FOO-NEXT: },
35+
// FOO-NEXT: {
36+
// FOO-NEXT: "kind": "externalParam",
37+
// FOO-NEXT: "spelling": "f"
38+
// FOO-NEXT: },
39+
// FOO-NEXT: {
40+
// FOO-NEXT: "kind": "text",
41+
// FOO-NEXT: "spelling": ": "
42+
// FOO-NEXT: },
43+
// FOO-NEXT: {
44+
// FOO-NEXT: "kind": "keyword",
45+
// FOO-NEXT: "spelling": "@escaping"
46+
// FOO-NEXT: },
47+
// FOO-NEXT: {
48+
// FOO-NEXT: "kind": "text",
49+
// FOO-NEXT: "spelling": " () -> (), "
50+
// FOO-NEXT: },
51+
// FOO-NEXT: {
52+
// FOO-NEXT: "kind": "externalParam",
53+
// FOO-NEXT: "spelling": "ext"
54+
// FOO-NEXT: },
55+
// FOO-NEXT: {
56+
// FOO-NEXT: "kind": "text",
57+
// FOO-NEXT: "spelling": " "
58+
// FOO-NEXT: },
59+
// FOO-NEXT: {
60+
// FOO-NEXT: "kind": "internalParam",
61+
// FOO-NEXT: "spelling": "int"
62+
// FOO-NEXT: },
63+
// FOO-NEXT: {
64+
// FOO-NEXT: "kind": "text",
65+
// FOO-NEXT: "spelling": ": "
66+
// FOO-NEXT: },
67+
// FOO-NEXT: {
68+
// FOO-NEXT: "kind": "typeIdentifier",
69+
// FOO-NEXT: "spelling": "Int",
70+
// FOO-NEXT: "preciseIdentifier": "s:Si"
71+
// FOO-NEXT: },
72+
// FOO-NEXT: {
73+
// FOO-NEXT: "kind": "text",
74+
// FOO-NEXT: "spelling": " = 2, "
75+
// FOO-NEXT: },
76+
// FOO-NEXT: {
77+
// FOO-NEXT: "kind": "externalParam",
78+
// FOO-NEXT: "spelling": "s"
79+
// FOO-NEXT: },
80+
// FOO-NEXT: {
81+
// FOO-NEXT: "kind": "text",
82+
// FOO-NEXT: "spelling": ": "
83+
// FOO-NEXT: },
84+
// FOO-NEXT: {
85+
// FOO-NEXT: "kind": "typeIdentifier",
86+
// FOO-NEXT: "spelling": "S"
87+
// FOO-NEXT: },
88+
// FOO-NEXT: {
89+
// FOO-NEXT: "kind": "text",
90+
// FOO-NEXT: "spelling": ") "
91+
// FOO-NEXT: },
92+
// FOO-NEXT: {
93+
// FOO-NEXT: "kind": "keyword",
94+
// FOO-NEXT: "spelling": "where"
95+
// FOO-NEXT: },
96+
// FOO-NEXT: {
97+
// FOO-NEXT: "kind": "text",
98+
// FOO-NEXT: "spelling": " "
99+
// FOO-NEXT: },
100+
// FOO-NEXT: {
101+
// FOO-NEXT: "kind": "typeIdentifier",
102+
// FOO-NEXT: "spelling": "S"
103+
// FOO-NEXT: },
104+
// FOO-NEXT: {
105+
// FOO-NEXT: "kind": "text",
106+
// FOO-NEXT: "spelling": " : "
107+
// FOO-NEXT: },
108+
// FOO-NEXT: {
109+
// FOO-NEXT: "kind": "typeIdentifier",
110+
// FOO-NEXT: "spelling": "Sequence",
111+
// FOO-NEXT: "preciseIdentifier": "s:ST"
112+
// FOO-NEXT: }
113+
// FOO-NEXT: ],
114+
115+
public func bar<T>(_ apply: () -> T, onChange: @autoclosure () -> @Sendable () -> Void) {}
116+
117+
// BAR-LABEL: "precise": "s:8Function3bar_8onChangeyxyXE_yyYbcyXKtlF",
118+
// BAR: "declarationFragments": [
119+
// BAR-NEXT: {
120+
// BAR-NEXT: "kind": "keyword",
121+
// BAR-NEXT: "spelling": "func"
122+
// BAR-NEXT: },
123+
// BAR-NEXT: {
124+
// BAR-NEXT: "kind": "text",
125+
// BAR-NEXT: "spelling": " "
126+
// BAR-NEXT: },
127+
// BAR-NEXT: {
128+
// BAR-NEXT: "kind": "identifier",
129+
// BAR-NEXT: "spelling": "bar"
130+
// BAR-NEXT: },
131+
// BAR-NEXT: {
132+
// BAR-NEXT: "kind": "text",
133+
// BAR-NEXT: "spelling": "<"
134+
// BAR-NEXT: },
135+
// BAR-NEXT: {
136+
// BAR-NEXT: "kind": "genericParameter",
137+
// BAR-NEXT: "spelling": "T"
138+
// BAR-NEXT: },
139+
// BAR-NEXT: {
140+
// BAR-NEXT: "kind": "text",
141+
// BAR-NEXT: "spelling": ">("
142+
// BAR-NEXT: },
143+
// BAR-NEXT: {
144+
// BAR-NEXT: "kind": "externalParam",
145+
// BAR-NEXT: "spelling": "_"
146+
// BAR-NEXT: },
147+
// BAR-NEXT: {
148+
// BAR-NEXT: "kind": "text",
149+
// BAR-NEXT: "spelling": " "
150+
// BAR-NEXT: },
151+
// BAR-NEXT: {
152+
// BAR-NEXT: "kind": "internalParam",
153+
// BAR-NEXT: "spelling": "apply"
154+
// BAR-NEXT: },
155+
// BAR-NEXT: {
156+
// BAR-NEXT: "kind": "text",
157+
// BAR-NEXT: "spelling": ": () -> "
158+
// BAR-NEXT: },
159+
// BAR-NEXT: {
160+
// BAR-NEXT: "kind": "typeIdentifier",
161+
// BAR-NEXT: "spelling": "T"
162+
// BAR-NEXT: },
163+
// BAR-NEXT: {
164+
// BAR-NEXT: "kind": "text",
165+
// BAR-NEXT: "spelling": ", "
166+
// BAR-NEXT: },
167+
// BAR-NEXT: {
168+
// BAR-NEXT: "kind": "externalParam",
169+
// BAR-NEXT: "spelling": "onChange"
170+
// BAR-NEXT: },
171+
// BAR-NEXT: {
172+
// BAR-NEXT: "kind": "text",
173+
// BAR-NEXT: "spelling": ": "
174+
// BAR-NEXT: },
175+
// BAR-NEXT: {
176+
// BAR-NEXT: "kind": "attribute",
177+
// BAR-NEXT: "spelling": "@autoclosure "
178+
// BAR-NEXT: },
179+
// BAR-NEXT: {
180+
// BAR-NEXT: "kind": "text",
181+
// BAR-NEXT: "spelling": "() -> "
182+
// BAR-NEXT: },
183+
// BAR-NEXT: {
184+
// BAR-NEXT: "kind": "attribute",
185+
// BAR-NEXT: "spelling": "@Sendable"
186+
// BAR-NEXT: },
187+
// BAR-NEXT: {
188+
// BAR-NEXT: "kind": "text",
189+
// BAR-NEXT: "spelling": " () -> "
190+
// BAR-NEXT: },
191+
// BAR-NEXT: {
192+
// BAR-NEXT: "kind": "typeIdentifier",
193+
// BAR-NEXT: "spelling": "Void",
194+
// BAR-NEXT: "preciseIdentifier": "s:s4Voida"
195+
// BAR-NEXT: },
196+
// BAR-NEXT: {
197+
// BAR-NEXT: "kind": "text",
198+
// BAR-NEXT: "spelling": ")"
199+
// BAR-NEXT: }
200+
// BAR-NEXT: ],

0 commit comments

Comments
 (0)