mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Macros] Private discriminators for outermost-private MacroExpansionDecl (#64813)
Add a private discriminator to the mangling of an outermost-private `MacroExpansionDecl` so that declaration macros in different files won't have colliding macro expansion buffer names. rdar://107462515
This commit is contained in:
@@ -1968,7 +1968,7 @@ void Serializer::writeCrossReference(const DeclContext *DC, uint32_t pathLen) {
|
||||
Identifier discriminator;
|
||||
if (generic->isOutermostPrivateOrFilePrivateScope()) {
|
||||
auto *containingFile = cast<FileUnit>(generic->getModuleScopeContext());
|
||||
discriminator = containingFile->getDiscriminatorForPrivateValue(generic);
|
||||
discriminator = containingFile->getDiscriminatorForPrivateDecl(generic);
|
||||
}
|
||||
|
||||
bool isProtocolExt = DC->getParent()->getExtendedProtocolDecl();
|
||||
@@ -2144,7 +2144,7 @@ void Serializer::writeCrossReference(const Decl *D) {
|
||||
if (type->isOutermostPrivateOrFilePrivateScope()) {
|
||||
auto *containingFile =
|
||||
cast<FileUnit>(type->getDeclContext()->getModuleScopeContext());
|
||||
discriminator = containingFile->getDiscriminatorForPrivateValue(type);
|
||||
discriminator = containingFile->getDiscriminatorForPrivateDecl(type);
|
||||
}
|
||||
|
||||
XRefTypePathPieceLayout::emitRecord(Out, ScratchRecord, abbrCode,
|
||||
@@ -3057,7 +3057,7 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
|
||||
if (auto *enclosingFile = dyn_cast<FileUnit>(topLevelSubcontext)) {
|
||||
if (shouldEmitPrivateDiscriminator) {
|
||||
Identifier discriminator =
|
||||
enclosingFile->getDiscriminatorForPrivateValue(value);
|
||||
enclosingFile->getDiscriminatorForPrivateDecl(value);
|
||||
unsigned abbrCode =
|
||||
S.DeclTypeAbbrCodes[PrivateDiscriminatorLayout::Code];
|
||||
PrivateDiscriminatorLayout::emitRecord(
|
||||
|
||||
Reference in New Issue
Block a user