Beispiel #1
0
 void populateMergeGroup(ExtensionInfoMap &InfoMap,
                         ExtensionMergeInfoMap &MergeInfoMap,
                         MergeGroupVector &Results,
                         bool AllowMergeWithDefBody) {
   for (auto &Pair : InfoMap) {
     ExtensionDecl *ED = Pair.first;
     ExtensionMergeInfo &MergeInfo = MergeInfoMap[ED];
     SynthesizedExtensionInfo &ExtInfo = InfoMap[ED];
     auto Found = std::find_if(Results.begin(), Results.end(),
       [&](ExtensionMergeGroup &Group) {
         return MergeInfo == MergeInfoMap[Group.Members.front()->Ext];
       });
     if (Found == Results.end()) {
       Results.push_back({&ExtInfo,
         (unsigned)MergeInfo.Requirements.size(),
         MergeInfo.InheritsCount,
         AllowMergeWithDefBody && MergeInfo.isMergeableWithTypeDef()});
     } else {
       Found->Members.push_back(&ExtInfo);
     }
   }
 }