@@ -391,7 +391,7 @@ static std::string adjustMacroExpansionBufferName(StringRef name) {
391391ArrayRef<unsigned > ExpandMemberAttributeMacros::evaluate (Evaluator &evaluator,
392392 Decl *decl) const {
393393 if (decl->isImplicit ())
394- return { }} ;
394+ return { };
395395
396396 auto *parentDecl = decl->getDeclContext ()->getAsDecl ();
397397 if (!parentDecl)
@@ -423,14 +423,16 @@ ArrayRef<unsigned> ExpandSynthesizedMemberMacroRequest::evaluate(
423423 return decl->getASTContext ().AllocateCopy (bufferIDs);
424424}
425425
426- bool ExpandPeerMacroRequest::evaluate (Evaluator &evaluator, Decl *decl) const {
427- bool addedPeers = false ;
426+ ArrayRef<unsigned >
427+ ExpandPeerMacroRequest::evaluate (Evaluator &evaluator, Decl *decl) const {
428+ SmallVector<unsigned , 2 > bufferIDs;
428429 decl->forEachAttachedMacro (MacroRole::Peer,
429430 [&](CustomAttr *attr, MacroDecl *macro) {
430- addedPeers |= expandPeers (attr, macro, decl);
431+ if (auto bufferID = expandPeers (attr, macro, decl))
432+ bufferIDs.push_back (*bufferID);
431433 });
432434
433- return addedPeers ;
435+ return decl-> getASTContext (). AllocateCopy (bufferIDs) ;
434436}
435437
436438// / Determine whether the given source file is from an expansion of the given
@@ -1034,7 +1036,7 @@ evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, CustomAttr *attr,
10341036 case MacroRole::Peer: {
10351037 generatedSourceKind = GeneratedSourceInfo::PeerMacroExpansion;
10361038 SourceLoc afterDeclLoc =
1037- Lexer::getLocForEndOfToken (sourceMgr, decl ->getEndLoc ());
1039+ Lexer::getLocForEndOfToken (sourceMgr, attachedTo ->getEndLoc ());
10381040 generatedOriginalSourceRange = CharSourceRange (afterDeclLoc, 0 );
10391041 break ;
10401042 }
@@ -1175,16 +1177,16 @@ swift::expandMembers(CustomAttr *attr, MacroDecl *macro, Decl *decl) {
11751177 return macroSourceFile->getBufferID ();
11761178}
11771179
1178- bool swift::expandPeers (CustomAttr *attr, MacroDecl *macro, Decl *decl) {
1180+ Optional<unsigned >
1181+ swift::expandPeers (CustomAttr *attr, MacroDecl *macro, Decl *decl) {
11791182 auto macroSourceFile = evaluateAttachedMacro (macro, decl, attr,
11801183 /* passParentContext*/ false ,
11811184 MacroRole::Peer);
11821185 if (!macroSourceFile)
1183- return false ;
1186+ return None ;
11841187
11851188 PrettyStackTraceDecl debugStack (" applying expanded peer macro" , decl);
11861189
1187- bool addedPeers = false ;
11881190 auto *parent = decl->getDeclContext ();
11891191 auto topLevelDecls = macroSourceFile->getTopLevelDecls ();
11901192 for (auto peer : topLevelDecls) {
@@ -1196,11 +1198,9 @@ bool swift::expandPeers(CustomAttr *attr, MacroDecl *macro, Decl *decl) {
11961198 // TODO: Add peers to global or local contexts.
11971199 continue ;
11981200 }
1199-
1200- addedPeers = true ;
12011201 }
12021202
1203- return addedPeers ;
1203+ return macroSourceFile-> getBufferID () ;
12041204}
12051205
12061206MacroDecl *
0 commit comments