@@ -417,21 +417,13 @@ bool ExpandSynthesizedMemberMacroRequest::evaluate(Evaluator &evaluator,
417
417
}
418
418
419
419
bool ExpandPeerMacroRequest::evaluate (Evaluator &evaluator, Decl *decl) const {
420
- SmallVector<Decl *, 2 > peers ;
420
+ bool addedPeers = false ;
421
421
decl->forEachAttachedMacro (MacroRole::Peer,
422
422
[&](CustomAttr *attr, MacroDecl *macro) {
423
- expandPeers (attr, macro, decl, peers );
423
+ addedPeers |= expandPeers (attr, macro, decl);
424
424
});
425
425
426
- // Expand all peers that have attached peer macros.
427
- for (auto *peer : peers) {
428
- (void )evaluateOrDefault (
429
- evaluator,
430
- ExpandPeerMacroRequest{peer},
431
- false );
432
- }
433
-
434
- return !peers.empty ();
426
+ return addedPeers;
435
427
}
436
428
437
429
// / Determine whether the given source file is from an expansion of the given
@@ -1086,16 +1078,16 @@ bool swift::expandMembers(CustomAttr *attr, MacroDecl *macro, Decl *decl) {
1086
1078
return synthesizedMembers;
1087
1079
}
1088
1080
1089
- void swift::expandPeers (CustomAttr *attr, MacroDecl *macro, Decl *decl,
1090
- SmallVectorImpl<Decl *> &peers) {
1081
+ bool swift::expandPeers (CustomAttr *attr, MacroDecl *macro, Decl *decl) {
1091
1082
auto macroSourceFile = evaluateAttachedMacro (macro, decl, attr,
1092
1083
/* passParentContext*/ false ,
1093
1084
MacroRole::Peer);
1094
1085
if (!macroSourceFile)
1095
- return ;
1086
+ return false ;
1096
1087
1097
1088
PrettyStackTraceDecl debugStack (" applying expanded peer macro" , decl);
1098
1089
1090
+ bool addedPeers = false ;
1099
1091
auto *parent = decl->getDeclContext ();
1100
1092
auto topLevelDecls = macroSourceFile->getTopLevelDecls ();
1101
1093
for (auto peer : topLevelDecls) {
@@ -1110,8 +1102,10 @@ void swift::expandPeers(CustomAttr *attr, MacroDecl *macro, Decl *decl,
1110
1102
continue ;
1111
1103
}
1112
1104
1113
- peers. push_back (peer) ;
1105
+ addedPeers = true ;
1114
1106
}
1107
+
1108
+ return addedPeers;
1115
1109
}
1116
1110
1117
1111
MacroDecl *
0 commit comments