@@ -1050,7 +1050,6 @@ namespace {
10501050 if (memberTypes.empty ())
10511051 hasExplicitAnyObject = true ;
10521052
1053- // Generic arguments are always imported as existential types.
10541053 Type importedTypeArg = ExistentialType::get (
10551054 ProtocolCompositionType::get (
10561055 Impl.SwiftContext , memberTypes,
@@ -1183,6 +1182,9 @@ namespace {
11831182 }
11841183 }
11851184
1185+ if (bridgedType->isConstraintType ())
1186+ bridgedType = ExistentialType::get (bridgedType);
1187+
11861188 return { importedType,
11871189 ImportHint (ImportHint::ObjCBridged, bridgedType) };
11881190 }
@@ -1203,9 +1205,9 @@ namespace {
12031205 members.push_back (proto->getDeclaredInterfaceType ());
12041206 }
12051207
1206- importedType =
1208+ importedType = ExistentialType::get (
12071209 ProtocolCompositionType::get (Impl.SwiftContext , members,
1208- /* HasExplicitAnyObject=*/ false );
1210+ /* HasExplicitAnyObject=*/ false )) ;
12091211 }
12101212
12111213 // Class or Class<P> maps to an existential metatype.
@@ -1283,32 +1285,6 @@ static bool isCFAudited(ImportTypeKind importKind) {
12831285 llvm_unreachable (" Invalid ImportTypeKind." );
12841286}
12851287
1286- // / True if the type can be an existential type in this context.
1287- static bool isExistentialContext (ImportTypeKind importKind) {
1288- switch (importKind) {
1289- case ImportTypeKind::Abstract:
1290- case ImportTypeKind::Typedef:
1291- return false ;
1292- case ImportTypeKind::Value:
1293- case ImportTypeKind::ObjCCollectionElement:
1294- case ImportTypeKind::Variable:
1295- case ImportTypeKind::Result:
1296- case ImportTypeKind::Enum:
1297- case ImportTypeKind::RecordField:
1298- case ImportTypeKind::AuditedVariable:
1299- case ImportTypeKind::AuditedResult:
1300- case ImportTypeKind::Parameter:
1301- case ImportTypeKind::CompletionHandlerResultParameter:
1302- case ImportTypeKind::CFRetainedOutParameter:
1303- case ImportTypeKind::CFUnretainedOutParameter:
1304- case ImportTypeKind::Property:
1305- case ImportTypeKind::PropertyWithReferenceSemantics:
1306- return true ;
1307- }
1308-
1309- llvm_unreachable (" Invalid ImportTypeKind." );
1310- }
1311-
13121288// / Turn T into Unmanaged<T>.
13131289static Type getUnmanagedType (ClangImporter::Implementation &impl,
13141290 Type payloadType) {
@@ -1574,11 +1550,6 @@ static ImportedType adjustTypeForConcreteImport(
15741550
15751551 assert (importedType);
15761552
1577- if (importedType->isConstraintType () &&
1578- isExistentialContext (importKind)) {
1579- importedType = ExistentialType::get (importedType);
1580- }
1581-
15821553 if (importKind == ImportTypeKind::RecordField &&
15831554 importedType->isAnyClassReferenceType () &&
15841555 !importedType->isForeignReferenceType ()) {
0 commit comments