Skip to content

Commit 4b1a1e7

Browse files
authored
Merge pull request #66889 from DougGregor/init-accessor-stop-escaping-init
[ASTPrinter] Stop unnecessary escaping of `init` in macro role attributes
2 parents 6da1df2 + 9606a9a commit 4b1a1e7

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

lib/AST/Attr.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,8 +1392,9 @@ bool DeclAttribute::printImpl(ASTPrinter &Printer, const PrintOptions &Options,
13921392
SmallString<32> buffer;
13931393
StringRef nameText = name.getName().getString(buffer);
13941394
bool shouldEscape =
1395-
escapeKeywordInContext(nameText, PrintNameContext::Normal) ||
1396-
nameText == "$";
1395+
!name.getName().isSpecial() &&
1396+
(escapeKeywordInContext(nameText, PrintNameContext::Normal) ||
1397+
nameText == "$");
13971398
Printer << "(";
13981399
if (shouldEscape)
13991400
Printer << "`";

test/ModuleInterface/macros.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,19 @@
3535
@attached(accessor) public macro myWrapper() = #externalMacro(module: "SomeModule", type: "Wrapper")
3636

3737
// CHECK: #if compiler(>=5.3) && $Macros && $AttachedMacros
38-
// CHECK: @attached(member, names: named(`init`), prefixed(`$`)) public macro MemberwiseInit() = #externalMacro(module: "SomeModule", type: "MemberwiseInitMacro")
38+
// CHECK: @attached(member, names: named(init), prefixed(`$`)) public macro MemberwiseInit() = #externalMacro(module: "SomeModule", type: "MemberwiseInitMacro")
3939
// CHECK-NEXT: #endif
4040
@attached(member, names: named(init), prefixed(`$`)) public macro MemberwiseInit() = #externalMacro(module: "SomeModule", type: "MemberwiseInitMacro")
4141

42+
// CHECK: #if compiler(>=5.3) && $Macros && $AttachedMacros
43+
// CHECK: @attached(member, names: named(`init`), prefixed(`$`)) public macro MemberwiseInitFunc() = #externalMacro(module: "SomeModule", type: "MemberwiseInitFuncMacro")
44+
// CHECK-NEXT: #endif
45+
@attached(member, names: named(`init`), prefixed(`$`)) public macro MemberwiseInitFunc() = #externalMacro(module: "SomeModule", type: "MemberwiseInitFuncMacro")
46+
47+
// CHECK: #if compiler(>=5.3) && $Macros && $AttachedMacros
48+
// CHECK: @attached(accessor, names: named(init)) public macro AccessorInitFunc() = #externalMacro(module: "SomeModule", type: "AccessorInitFuncMacro")
49+
// CHECK-NEXT: #endif
50+
@attached(accessor, names: named(init)) public macro AccessorInitFunc() = #externalMacro(module: "SomeModule", type: "AccessorInitFuncMacro")
51+
4252
// CHECK-NOT: internalStringify
4353
@freestanding(expression) macro internalStringify<T>(_ value: T) -> (T, String) = #externalMacro(module: "SomeModule", type: "StringifyMacro")

0 commit comments

Comments
 (0)