File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -564,6 +564,13 @@ ConstraintLocator *ConstraintSystem::getCalleeLocator(
564
564
}
565
565
566
566
if (auto *UDE = getAsExpr<UnresolvedDotExpr>(anchor)) {
567
+ if (UDE->isImplicit () &&
568
+ UDE->getName ().getBaseName () == Context.Id_callAsFunction ) {
569
+ return getConstraintLocator (anchor,
570
+ {LocatorPathElt::ApplyFunction (),
571
+ LocatorPathElt::ImplicitCallAsFunction ()});
572
+ }
573
+
567
574
return getConstraintLocator (
568
575
anchor, TypeChecker::getSelfForInitDelegationInConstructor (DC, UDE)
569
576
? ConstraintLocator::ConstructorMember
Original file line number Diff line number Diff line change @@ -1174,3 +1174,27 @@ let list3 = list {
1174
1174
}
1175
1175
print ( list3)
1176
1176
// CHECK: (cons "4" (cons (cons "3" (cons 2.0 nil)) (cons 1 nil)))
1177
+
1178
+ func test_callAsFunction_with_resultBuilder( ) {
1179
+ struct CallableTest {
1180
+ func callAsFunction< T> ( @TupleBuilder _ body: ( Bool ) -> T ) {
1181
+ print ( body ( true ) )
1182
+ }
1183
+ }
1184
+
1185
+ CallableTest ( ) {
1186
+ 0
1187
+ " with parens "
1188
+ $0
1189
+ }
1190
+
1191
+ CallableTest {
1192
+ 1
1193
+ " without parens "
1194
+ $0
1195
+ }
1196
+ }
1197
+
1198
+ test_callAsFunction_with_resultBuilder ( )
1199
+ // CHECK: (0, "with parens", true)
1200
+ // CHECK: (1, "without parens", true)
You can’t perform that action at this time.
0 commit comments