@@ -58,6 +58,8 @@ extern "C" ptrdiff_t swift_ASTGen_expandFreestandingMacro(
5858
5959extern " C" ptrdiff_t swift_ASTGen_expandAttachedMacro (
6060 void *diagEngine, void *macro,
61+ const char *discriminator,
62+ ptrdiff_t discriminatorLength,
6163 uint32_t rawMacroRole,
6264 void *customAttrSourceFile,
6365 const void *customAttrSourceLocation,
@@ -867,6 +869,7 @@ evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, CustomAttr *attr,
867869 // Evaluate the macro.
868870 NullTerminatedStringRef evaluatedSource;
869871
872+ std::string discriminator;
870873 auto macroDef = macro->getDefinition ();
871874 switch (macroDef.kind ) {
872875 case MacroDefinition::Kind::Undefined:
@@ -932,11 +935,18 @@ evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, CustomAttr *attr,
932935 if (auto var = dyn_cast<VarDecl>(attachedTo))
933936 searchDecl = var->getParentPatternBinding ();
934937
938+ {
939+ Mangle::ASTMangler mangler;
940+ discriminator =
941+ mangler.mangleAttachedMacroExpansion (attachedTo, attr, role);
942+ }
943+
935944 const char *evaluatedSourceAddress;
936945 ptrdiff_t evaluatedSourceLength;
937946 swift_ASTGen_expandAttachedMacro (
938947 &ctx.Diags ,
939948 externalDef.opaqueHandle ,
949+ discriminator.data (), discriminator.size (),
940950 static_cast <uint32_t >(role),
941951 astGenAttrSourceFile, attr->AtLoc .getOpaquePointerValue (),
942952 astGenDeclSourceFile, searchDecl->getStartLoc ().getOpaquePointerValue (),
@@ -955,14 +965,7 @@ evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, CustomAttr *attr,
955965 }
956966
957967 // Figure out a reasonable name for the macro expansion buffer.
958- std::string discriminator;
959- std::string bufferName;
960- {
961- Mangle::ASTMangler mangler;
962- discriminator =
963- mangler.mangleAttachedMacroExpansion (attachedTo, attr, role);
964- bufferName = adjustMacroExpansionBufferName (discriminator);
965- }
968+ std::string bufferName = adjustMacroExpansionBufferName (discriminator);
966969
967970 // Dump macro expansions to standard output, if requested.
968971 if (ctx.LangOpts .DumpMacroExpansions ) {
@@ -1194,9 +1197,6 @@ swift::expandPeers(CustomAttr *attr, MacroDecl *macro, Decl *decl) {
11941197 nominal->addMember (peer);
11951198 } else if (auto *extension = dyn_cast<ExtensionDecl>(parent)) {
11961199 extension->addMember (peer);
1197- } else {
1198- // TODO: Add peers to global or local contexts.
1199- continue ;
12001200 }
12011201 }
12021202
0 commit comments