From bbbc3467682be89adaffbcbb855f6253dec5fe34 Mon Sep 17 00:00:00 2001 From: Doug Gregor Date: Sun, 27 Nov 2022 11:47:25 -0800 Subject: [PATCH] [Macros] Treat MacroDecl as a local context, like functions are. --- include/swift/AST/DeclContext.h | 6 +++--- lib/AST/ASTMangler.cpp | 2 +- lib/Serialization/Serialization.cpp | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/swift/AST/DeclContext.h b/include/swift/AST/DeclContext.h index 4bc2a3a7430..c31daf43d9d 100644 --- a/include/swift/AST/DeclContext.h +++ b/include/swift/AST/DeclContext.h @@ -94,14 +94,14 @@ enum class DeclContextKind : unsigned { EnumElementDecl, AbstractFunctionDecl, SerializedLocal, - Last_LocalDeclContextKind = SerializedLocal, + MacroDecl, + Last_LocalDeclContextKind = MacroDecl, Module, FileUnit, GenericTypeDecl, ExtensionDecl, - MacroDecl, - Last_DeclContextKind = MacroDecl + Last_DeclContextKind = ExtensionDecl }; /// Kinds of DeclContexts after deserialization. diff --git a/lib/AST/ASTMangler.cpp b/lib/AST/ASTMangler.cpp index 17a6a303150..233dac6d9b3 100644 --- a/lib/AST/ASTMangler.cpp +++ b/lib/AST/ASTMangler.cpp @@ -2381,7 +2381,7 @@ void ASTMangler::appendContext(const DeclContext *ctx, StringRef useModuleName) return appendContext(ctx->getParent(), useModuleName); case DeclContextKind::MacroDecl: - llvm_unreachable("macro declarations are never mangled"); + return appendContext(ctx->getParent(), useModuleName); } llvm_unreachable("bad decl context"); diff --git a/lib/Serialization/Serialization.cpp b/lib/Serialization/Serialization.cpp index b661bb70801..1bb70db035d 100644 --- a/lib/Serialization/Serialization.cpp +++ b/lib/Serialization/Serialization.cpp @@ -485,7 +485,8 @@ static ModuleDecl *getModule(ModuleOrSourceFile DC) { static bool shouldSerializeAsLocalContext(const DeclContext *DC) { return DC->isLocalContext() && !isa(DC) && - !isa(DC) && !isa(DC); + !isa(DC) && !isa(DC) && + !isa(DC); } namespace {