@@ -573,14 +573,11 @@ void BridgedExtensionDecl_setParsedMembers(BridgedExtensionDecl bridgedDecl,
573573 setParsedMembers (bridgedDecl.unbridged (), bridgedMembers);
574574}
575575
576- static SmallVector<InheritedEntry>
577- convertToInheritedEntries (BridgedArrayRef cInheritedTypes) {
578- SmallVector<InheritedEntry> inheritedEntries;
579- for (auto &repr : cInheritedTypes.unbridged <BridgedTypeRepr>()) {
580- inheritedEntries.emplace_back (repr.unbridged ());
581- }
582-
583- return inheritedEntries;
576+ static ArrayRef<InheritedEntry>
577+ convertToInheritedEntries (ASTContext &ctx, BridgedArrayRef cInheritedTypes) {
578+ return ctx.AllocateTransform <InheritedEntry>(
579+ cInheritedTypes.unbridged <BridgedTypeRepr>(),
580+ [](auto &e) { return InheritedEntry (e.unbridged ()); });
584581}
585582
586583BridgedNominalTypeDecl BridgedEnumDecl_createParsed (
@@ -594,7 +591,7 @@ BridgedNominalTypeDecl BridgedEnumDecl_createParsed(
594591
595592 NominalTypeDecl *decl = new (context) EnumDecl (
596593 cEnumKeywordLoc.unbridged (), cName.unbridged (), cNameLoc.unbridged (),
597- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
594+ convertToInheritedEntries (context, cInheritedTypes),
598595 genericParamList.unbridged (), cDeclContext.unbridged ());
599596 decl->setTrailingWhereClause (genericWhereClause.unbridged ());
600597 decl->setBraces (cBraceRange.unbridged ());
@@ -646,7 +643,7 @@ BridgedNominalTypeDecl BridgedStructDecl_createParsed(
646643
647644 NominalTypeDecl *decl = new (context) StructDecl (
648645 cStructKeywordLoc.unbridged (), cName.unbridged (), cNameLoc.unbridged (),
649- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
646+ convertToInheritedEntries (context, cInheritedTypes),
650647 genericParamList.unbridged (), cDeclContext.unbridged ());
651648 decl->setTrailingWhereClause (genericWhereClause.unbridged ());
652649 decl->setBraces (cBraceRange.unbridged ());
@@ -665,7 +662,7 @@ BridgedNominalTypeDecl BridgedClassDecl_createParsed(
665662
666663 NominalTypeDecl *decl = new (context) ClassDecl (
667664 cClassKeywordLoc.unbridged (), cName.unbridged (), cNameLoc.unbridged (),
668- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
665+ convertToInheritedEntries (context, cInheritedTypes),
669666 genericParamList.unbridged (), cDeclContext.unbridged (), isActor);
670667 decl->setTrailingWhereClause (genericWhereClause.unbridged ());
671668 decl->setBraces (cBraceRange.unbridged ());
@@ -680,19 +677,20 @@ BridgedNominalTypeDecl BridgedProtocolDecl_createParsed(
680677 BridgedArrayRef cInheritedTypes,
681678 BridgedNullableTrailingWhereClause genericWhereClause,
682679 BridgedSourceRange cBraceRange) {
683- SmallVector<PrimaryAssociatedTypeName, 2 > primaryAssociatedTypeNames;
684- for (auto &pair :
685- cPrimaryAssociatedTypeNames.unbridged <BridgedIdentifierAndSourceLoc>()) {
686- primaryAssociatedTypeNames.emplace_back (pair.Name .unbridged (),
687- pair.NameLoc .unbridged ());
688- }
689-
690680 ASTContext &context = cContext.unbridged ();
681+
682+ auto primaryAssociatedTypeNames =
683+ context.AllocateTransform <PrimaryAssociatedTypeName>(
684+ cPrimaryAssociatedTypeNames
685+ .unbridged <BridgedIdentifierAndSourceLoc>(),
686+ [](auto &e) -> PrimaryAssociatedTypeName {
687+ return {e.Name .unbridged (), e.NameLoc .unbridged ()};
688+ });
689+
691690 NominalTypeDecl *decl = new (context) ProtocolDecl (
692691 cDeclContext.unbridged (), cProtocolKeywordLoc.unbridged (),
693- cNameLoc.unbridged (), cName.unbridged (),
694- context.AllocateCopy (primaryAssociatedTypeNames),
695- context.AllocateCopy (convertToInheritedEntries (cInheritedTypes)),
692+ cNameLoc.unbridged (), cName.unbridged (), primaryAssociatedTypeNames,
693+ convertToInheritedEntries (context, cInheritedTypes),
696694 genericWhereClause.unbridged ());
697695 decl->setBraces (cBraceRange.unbridged ());
698696
@@ -711,8 +709,7 @@ BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed(
711709 context, cDeclContext.unbridged (), cAssociatedtypeKeywordLoc.unbridged (),
712710 cName.unbridged (), cNameLoc.unbridged (), defaultType.unbridged (),
713711 genericWhereClause.unbridged ());
714- decl->setInherited (
715- context.AllocateCopy (convertToInheritedEntries (cInheritedTypes)));
712+ decl->setInherited (convertToInheritedEntries (context, cInheritedTypes));
716713
717714 return decl;
718715}
@@ -727,7 +724,7 @@ BridgedExtensionDecl BridgedExtensionDecl_createParsed(
727724
728725 auto *decl = ExtensionDecl::create (
729726 context, cExtensionKeywordLoc.unbridged (), extendedType.unbridged (),
730- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
727+ convertToInheritedEntries (context, cInheritedTypes),
731728 cDeclContext.unbridged (), genericWhereClause.unbridged ());
732729 decl->setBraces (cBraceRange.unbridged ());
733730 return decl;
@@ -1133,8 +1130,8 @@ BridgedBraceStmt BridgedBraceStmt_createParsed(BridgedASTContext cContext,
11331130 }
11341131
11351132 ASTContext &context = cContext.unbridged ();
1136- return BraceStmt::create (context, cLBLoc.unbridged (),
1137- context. AllocateCopy (nodes), cRBLoc.unbridged ());
1133+ return BraceStmt::create (context, cLBLoc.unbridged (), nodes,
1134+ cRBLoc.unbridged ());
11381135}
11391136
11401137BridgedIfStmt BridgedIfStmt_createParsed (BridgedASTContext cContext,
0 commit comments