File tree 2 files changed +18
-4
lines changed
2 files changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -378,10 +378,14 @@ Type ASTBuilder::createFunctionType(
378
378
379
379
auto einfo = AnyFunctionType::ExtInfo (representation,
380
380
/* throws*/ flags.throws ());
381
- if (flags.isEscaping ())
382
- einfo = einfo.withNoEscape (false );
383
- else
384
- einfo = einfo.withNoEscape (true );
381
+
382
+ if (representation == FunctionTypeRepresentation::Swift ||
383
+ representation == FunctionTypeRepresentation::Block) {
384
+ if (flags.isEscaping ())
385
+ einfo = einfo.withNoEscape (false );
386
+ else
387
+ einfo = einfo.withNoEscape (true );
388
+ }
385
389
386
390
// The result type must be materializable.
387
391
if (!output->isMaterializable ()) return Type ();
Original file line number Diff line number Diff line change @@ -120,6 +120,12 @@ do {
120
120
let escaping : ( @escaping ( ) -> ( ) ) -> ( ) = { _ in }
121
121
blackHole ( escaping)
122
122
}
123
+
124
+ do {
125
+ let c : [ @convention ( c) ( ) -> ( ) ] = [ ]
126
+ blackHole ( c)
127
+ }
128
+
123
129
// DEMANGLE: $syycD
124
130
// DEMANGLE: $sySSzcD
125
131
// DEMANGLE: $sySSncD
136
142
// DEMANGLE: $sSim_Sf1xSitD
137
143
// DEMANGLE: $sSi1x_SfSim1ytD
138
144
// DEMANGLE: $syyyccD
145
+ // DEMANGLE: $sSayyyXCGD
139
146
140
147
// CHECK: () -> ()
141
148
// CHECK: (inout String) -> ()
153
160
// CHECK: (Int.Type, x: Float, Int)
154
161
// CHECK: (x: Int, Float, y: Int.Type)
155
162
// CHECK: (@escaping () -> ()) -> ()
163
+ // CHECK: Array<@convention(c) () -> ()>
156
164
157
165
// DEMANGLE: $sSimD
158
166
// DEMANGLE: $syycmD
171
179
// DEMANGLE: $sSim_Sf1xSitmD
172
180
// DEMANGLE: $sSi1x_SfSim1ytmD
173
181
// DEMANGLE: $syyyccmD
182
+ // DEMANGLE: $sSayyyXCGmD
174
183
175
184
// CHECK: Int.Type
176
185
// CHECK: ((inout String) -> ()).Type
188
197
// CHECK: (Int.Type, x: Float, Int).Type
189
198
// CHECK: (x: Int, Float, y: Int.Type).Type
190
199
// CHECK: ((@escaping () -> ()) -> ()).Type
200
+ // CHECK: Array<@convention(c) () -> ()>.Type
You can’t perform that action at this time.
0 commit comments