@@ -573,14 +573,11 @@ void BridgedExtensionDecl_setParsedMembers(BridgedExtensionDecl bridgedDecl,
573
573
setParsedMembers (bridgedDecl.unbridged (), bridgedMembers);
574
574
}
575
575
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 ()); });
584
581
}
585
582
586
583
BridgedNominalTypeDecl BridgedEnumDecl_createParsed (
@@ -594,7 +591,7 @@ BridgedNominalTypeDecl BridgedEnumDecl_createParsed(
594
591
595
592
NominalTypeDecl *decl = new (context) EnumDecl (
596
593
cEnumKeywordLoc.unbridged (), cName.unbridged (), cNameLoc.unbridged (),
597
- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
594
+ convertToInheritedEntries (context, cInheritedTypes),
598
595
genericParamList.unbridged (), cDeclContext.unbridged ());
599
596
decl->setTrailingWhereClause (genericWhereClause.unbridged ());
600
597
decl->setBraces (cBraceRange.unbridged ());
@@ -646,7 +643,7 @@ BridgedNominalTypeDecl BridgedStructDecl_createParsed(
646
643
647
644
NominalTypeDecl *decl = new (context) StructDecl (
648
645
cStructKeywordLoc.unbridged (), cName.unbridged (), cNameLoc.unbridged (),
649
- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
646
+ convertToInheritedEntries (context, cInheritedTypes),
650
647
genericParamList.unbridged (), cDeclContext.unbridged ());
651
648
decl->setTrailingWhereClause (genericWhereClause.unbridged ());
652
649
decl->setBraces (cBraceRange.unbridged ());
@@ -665,7 +662,7 @@ BridgedNominalTypeDecl BridgedClassDecl_createParsed(
665
662
666
663
NominalTypeDecl *decl = new (context) ClassDecl (
667
664
cClassKeywordLoc.unbridged (), cName.unbridged (), cNameLoc.unbridged (),
668
- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
665
+ convertToInheritedEntries (context, cInheritedTypes),
669
666
genericParamList.unbridged (), cDeclContext.unbridged (), isActor);
670
667
decl->setTrailingWhereClause (genericWhereClause.unbridged ());
671
668
decl->setBraces (cBraceRange.unbridged ());
@@ -680,19 +677,20 @@ BridgedNominalTypeDecl BridgedProtocolDecl_createParsed(
680
677
BridgedArrayRef cInheritedTypes,
681
678
BridgedNullableTrailingWhereClause genericWhereClause,
682
679
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
-
690
680
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
+
691
690
NominalTypeDecl *decl = new (context) ProtocolDecl (
692
691
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),
696
694
genericWhereClause.unbridged ());
697
695
decl->setBraces (cBraceRange.unbridged ());
698
696
@@ -711,8 +709,7 @@ BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed(
711
709
context, cDeclContext.unbridged (), cAssociatedtypeKeywordLoc.unbridged (),
712
710
cName.unbridged (), cNameLoc.unbridged (), defaultType.unbridged (),
713
711
genericWhereClause.unbridged ());
714
- decl->setInherited (
715
- context.AllocateCopy (convertToInheritedEntries (cInheritedTypes)));
712
+ decl->setInherited (convertToInheritedEntries (context, cInheritedTypes));
716
713
717
714
return decl;
718
715
}
@@ -727,7 +724,7 @@ BridgedExtensionDecl BridgedExtensionDecl_createParsed(
727
724
728
725
auto *decl = ExtensionDecl::create (
729
726
context, cExtensionKeywordLoc.unbridged (), extendedType.unbridged (),
730
- context. AllocateCopy ( convertToInheritedEntries (cInheritedTypes) ),
727
+ convertToInheritedEntries (context, cInheritedTypes),
731
728
cDeclContext.unbridged (), genericWhereClause.unbridged ());
732
729
decl->setBraces (cBraceRange.unbridged ());
733
730
return decl;
@@ -1133,8 +1130,8 @@ BridgedBraceStmt BridgedBraceStmt_createParsed(BridgedASTContext cContext,
1133
1130
}
1134
1131
1135
1132
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 ());
1138
1135
}
1139
1136
1140
1137
BridgedIfStmt BridgedIfStmt_createParsed (BridgedASTContext cContext,
0 commit comments