From 8a6d50717d007c8c45c3e3a51257d68e57acdb00 Mon Sep 17 00:00:00 2001 From: Ben Barham Date: Tue, 16 May 2023 16:28:32 -0700 Subject: [PATCH] [AST] Use a different operator for member attribute macros Macro expansions are currently written to disk using the mangled name of the macro. Do not use operators that only differ in case-sensitivity to avoid issues on case-insensitive filesystems. Resolves rdar://109371653. (cherry picked from commit 515d22a48624739f578d452953437cbb70404878) --- docs/ABI/Mangling.rst | 2 +- lib/AST/ASTMangler.cpp | 2 +- lib/Demangling/Demangler.cpp | 2 +- lib/Demangling/OldRemangler.cpp | 2 +- lib/Demangling/Remangler.cpp | 2 +- test/SourceKit/Macros/macro_basic.swift | 8 ++++---- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/ABI/Mangling.rst b/docs/ABI/Mangling.rst index aefddad6eb324..83da5feb71e67 100644 --- a/docs/ABI/Mangling.rst +++ b/docs/ABI/Mangling.rst @@ -399,7 +399,7 @@ Entities macro-discriminator-list ::= macro-discriminator-list? file-discriminator? macro-expansion-operator INDEX macro-expansion-operator ::= decl-name identifier 'fMa' // attached accessor macro - macro-expansion-operator ::= decl-name identifier 'fMA' // attached member-attribute macro + macro-expansion-operator ::= decl-name identifier 'fMr' // attached member-attribute macro macro-expansion-operator ::= identifier 'fMf' // freestanding macro macro-expansion-operator ::= decl-name identifier 'fMm' // attached member macro macro-expansion-operator ::= decl-name identifier 'fMp' // attached peer macro diff --git a/lib/AST/ASTMangler.cpp b/lib/AST/ASTMangler.cpp index 364539511aa44..8bb9e280890d5 100644 --- a/lib/AST/ASTMangler.cpp +++ b/lib/AST/ASTMangler.cpp @@ -3977,7 +3977,7 @@ void ASTMangler::appendMacroExpansionOperator( break; case MacroRole::MemberAttribute: - appendOperator("fMA", Index(discriminator)); + appendOperator("fMr", Index(discriminator)); break; case MacroRole::Member: diff --git a/lib/Demangling/Demangler.cpp b/lib/Demangling/Demangler.cpp index e2e33b5cdfb61..81fe4defcfa2e 100644 --- a/lib/Demangling/Demangler.cpp +++ b/lib/Demangling/Demangler.cpp @@ -4070,7 +4070,7 @@ NodePointer Demangler::demangleMacroExpansion() { isFreestanding = false; break; - case 'A': + case 'r': kind = Node::Kind::MemberAttributeAttachedMacroExpansion; isAttached = true; isFreestanding = false; diff --git a/lib/Demangling/OldRemangler.cpp b/lib/Demangling/OldRemangler.cpp index c7cbed040dcee..9bceeadb4d4ba 100644 --- a/lib/Demangling/OldRemangler.cpp +++ b/lib/Demangling/OldRemangler.cpp @@ -1079,7 +1079,7 @@ ManglingError Remangler::mangleAccessorAttachedMacroExpansion( ManglingError Remangler::mangleMemberAttributeAttachedMacroExpansion( Node *node, unsigned depth) { - Buffer << "fMA"; + Buffer << "fMr"; RETURN_IF_ERROR(mangleIndex(node, depth + 1)); return mangleChildNodes(node, depth + 1); } diff --git a/lib/Demangling/Remangler.cpp b/lib/Demangling/Remangler.cpp index bf2e80636571a..be0569d7b4b08 100644 --- a/lib/Demangling/Remangler.cpp +++ b/lib/Demangling/Remangler.cpp @@ -2919,7 +2919,7 @@ ManglingError Remangler::mangleMemberAttributeAttachedMacroExpansion( RETURN_IF_ERROR(mangleChildNode(node, 0, depth + 1)); RETURN_IF_ERROR(mangleChildNode(node, 1, depth + 1)); RETURN_IF_ERROR(mangleChildNode(node, 2, depth + 1)); - Buffer << "fMA"; + Buffer << "fMr"; return mangleChildNode(node, 3, depth + 1); } diff --git a/test/SourceKit/Macros/macro_basic.swift b/test/SourceKit/Macros/macro_basic.swift index f3d1481325f4b..30e4ef1c11d13 100644 --- a/test/SourceKit/Macros/macro_basic.swift +++ b/test/SourceKit/Macros/macro_basic.swift @@ -172,16 +172,16 @@ macro anonymousTypes(_: () -> String) = #externalMacro(module: "MacroDefinition" // RUN: %sourcekitd-test -req=refactoring.expand.macro -pos=21:1 %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=ATTACHED_EXPAND %s // RUN: %sourcekitd-test -req=refactoring.expand.macro -pos=21:2 %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=ATTACHED_EXPAND %s // ATTACHED_EXPAND: source.edit.kind.active: -// ATTACHED_EXPAND-NEXT: 23:3-23:3 (@__swiftmacro_9MacroUser1SV1x13myTypeWrapperfMA_.swift) "@accessViaStorage" +// ATTACHED_EXPAND-NEXT: 23:3-23:3 (@__swiftmacro_9MacroUser1SV1x13myTypeWrapperfMr_.swift) "@accessViaStorage" // ATTACHED_EXPAND-NEXT: source.edit.kind.active: -// ATTACHED_EXPAND-NEXT: 24:3-24:3 (@__swiftmacro_9MacroUser1SV1y13myTypeWrapperfMA0_.swift) "@accessViaStorage" +// ATTACHED_EXPAND-NEXT: 24:3-24:3 (@__swiftmacro_9MacroUser1SV1y13myTypeWrapperfMr0_.swift) "@accessViaStorage" // ATTACHED_EXPAND-NEXT: source.edit.kind.active: // ATTACHED_EXPAND-NEXT: 25:1-25:1 (@__swiftmacro_9MacroUser1S13myTypeWrapperfMm_.swift) "private var _storage = _Storage()" // ATTACHED_EXPAND-NEXT: source.edit.kind.active: // ATTACHED_EXPAND-NEXT: 21:1-21:15 "" //##-- Cursor info on the attribute expanded by @myTypeWrapper -// RUN: %sourcekitd-test -req=cursor -cursor-action -req-opts=retrieve_symbol_graph=1 -offset=1 @__swiftmacro_9MacroUser1SV1x13myTypeWrapperfMA_.swift -primary-file %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=NESTED_ATTACHED_CURSOR %s +// RUN: %sourcekitd-test -req=cursor -cursor-action -req-opts=retrieve_symbol_graph=1 -offset=1 @__swiftmacro_9MacroUser1SV1x13myTypeWrapperfMr_.swift -primary-file %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=NESTED_ATTACHED_CURSOR %s // NESTED_ATTACHED_CURSOR: source.lang.swift.ref.macro // NESTED_ATTACHED_CURSOR-SAME: macro_basic.swift:10:27-10:43 // NESTED_ATTACHED_CURSOR-LABEL: SYMBOL GRAPH BEGIN @@ -200,7 +200,7 @@ macro anonymousTypes(_: () -> String) = #externalMacro(module: "MacroDefinition" // NESTED_ATTACHED_CURSOR-NEXT: ACTIONS END //##-- Expansion on the attribute expanded by @myTypeWrapper -// RUN: %sourcekitd-test -req=refactoring.expand.macro -pos=1:1 @__swiftmacro_9MacroUser1SV1x13myTypeWrapperfMA_.swift -primary-file %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=NESTED_ATTACHED_EXPAND %s +// RUN: %sourcekitd-test -req=refactoring.expand.macro -pos=1:1 @__swiftmacro_9MacroUser1SV1x13myTypeWrapperfMr_.swift -primary-file %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=NESTED_ATTACHED_EXPAND %s // NESTED_ATTACHED_EXPAND: source.edit.kind.active: // NESTED_ATTACHED_EXPAND-NEXT: Macros/macro_basic.swift 23:13-23:13 (@__swiftmacro_9MacroUser1SV1x16accessViaStoragefMa_.swift) "{ // NESTED_ATTACHED_EXPAND-NEXT: get {