Skip to content

Commit 3d02f52

Browse files
authored
Merge pull request swiftlang#4523 from benlangmuir/attr-tags
2 parents 4fc3531 + 6acdf89 commit 3d02f52

File tree

6 files changed

+23
-17
lines changed

6 files changed

+23
-17
lines changed

include/swift/AST/ASTPrinter.h

+10-4
Original file line numberDiff line numberDiff line change
@@ -175,20 +175,26 @@ class ASTPrinter {
175175

176176
ASTPrinter &operator<<(DeclName name);
177177

178-
void printKeyword(StringRef Name) {
178+
void printKeyword(StringRef name) {
179179
callPrintNamePre(PrintNameContext::Keyword);
180-
*this << Name;
180+
*this << name;
181181
printNamePost(PrintNameContext::Keyword);
182182
}
183183

184-
void printAttrName(StringRef Name, bool needAt = false) {
184+
void printAttrName(StringRef name, bool needAt = false) {
185185
callPrintNamePre(PrintNameContext::Attribute);
186186
if (needAt)
187187
*this << "@";
188-
*this << Name;
188+
*this << name;
189189
printNamePost(PrintNameContext::Attribute);
190190
}
191191

192+
void printSimpleAttr(StringRef name, bool needAt = false) {
193+
callPrintStructurePre(PrintStructureKind::BuiltinAttribute);
194+
printAttrName(name, needAt);
195+
printStructurePost(PrintStructureKind::BuiltinAttribute);
196+
}
197+
192198
void printName(Identifier Name,
193199
PrintNameContext Context = PrintNameContext::Normal);
194200

lib/AST/ASTPrinter.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -3791,12 +3791,12 @@ class TypePrinter : public TypeVisitor<TypePrinter> {
37913791
return;
37923792

37933793
if (info.isAutoClosure() && !Options.excludeAttrKind(TAK_autoclosure)) {
3794-
Printer.printAttrName("@autoclosure");
3794+
Printer.printSimpleAttr("@autoclosure");
37953795
Printer << " ";
37963796
}
37973797
if (inParameterPrinting && !info.isNoEscape() &&
37983798
!Options.excludeAttrKind(TAK_escaping)) {
3799-
Printer.printAttrName("@escaping");
3799+
Printer.printSimpleAttr("@escaping");
38003800
Printer << " ";
38013801
}
38023802

lib/AST/Attr.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,7 @@ bool DeclAttribute::printImpl(ASTPrinter &Printer, const PrintOptions &Options)
319319
if (DeclAttribute::isDeclModifier(getKind())) {
320320
Printer.printKeyword(getAttrName());
321321
} else {
322-
Printer.callPrintStructurePre(PrintStructureKind::BuiltinAttribute);
323-
Printer.printAttrName(getAttrName(), /*needAt=*/true);
324-
Printer.printStructurePost(PrintStructureKind::BuiltinAttribute);
322+
Printer.printSimpleAttr(getAttrName(), /*needAt=*/true);
325323
}
326324
return true;
327325

lib/AST/TypeRepr.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -284,25 +284,27 @@ void AttributedTypeRepr::printAttrs(ASTPrinter &Printer,
284284
};
285285

286286
if (hasAttr(TAK_autoclosure)) {
287-
Printer.printAttrName("@autoclosure");
287+
Printer.printSimpleAttr("@autoclosure");
288288
Printer << " ";
289289
}
290290
if (hasAttr(TAK_escaping)) {
291-
Printer.printAttrName("@escaping");
291+
Printer.printSimpleAttr("@escaping");
292292
Printer << " ";
293293
}
294294

295295
if (hasAttr(TAK_thin)) {
296-
Printer.printAttrName("@thin");
296+
Printer.printSimpleAttr("@thin");
297297
Printer << " ";
298298
}
299299
if (hasAttr(TAK_thick)) {
300-
Printer.printAttrName("@thick");
300+
Printer.printSimpleAttr("@thick");
301301
Printer << " ";
302302
}
303303
if (hasAttr(TAK_convention) && Attrs.convention.hasValue()) {
304+
Printer.callPrintStructurePre(PrintStructureKind::BuiltinAttribute);
304305
Printer.printAttrName("@convention");
305306
Printer << "(" << Attrs.convention.getValue() << ") ";
307+
Printer.printStructurePost(PrintStructureKind::BuiltinAttribute);
306308
}
307309
}
308310

test/SourceKit/CursorInfo/cursor_info.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -612,10 +612,10 @@ func rethrowingFunction1(_: (Int) throws -> Void) rethrows -> Void {}
612612
// CHECK70: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>paramAutoclosureNoescape1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>msg</decl.var.parameter.name>: <decl.var.parameter.type>() -&gt; <decl.function.returntype><ref.struct usr="s:SS">String</ref.struct></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
613613

614614
// RUN: %sourcekitd-test -req=cursor -pos=156:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK71
615-
// CHECK71: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>paramAutoclosureNoescape2</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>msg</decl.var.parameter.name>: <decl.var.parameter.type><syntaxtype.attribute.name>@autoclosure</syntaxtype.attribute.name> () -&gt; <decl.function.returntype><ref.struct usr="s:SS">String</ref.struct></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
615+
// CHECK71: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>paramAutoclosureNoescape2</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>msg</decl.var.parameter.name>: <decl.var.parameter.type><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@autoclosure</syntaxtype.attribute.name></syntaxtype.attribute.builtin> () -&gt; <decl.function.returntype><ref.struct usr="s:SS">String</ref.struct></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
616616

617617
// RUN: %sourcekitd-test -req=cursor -pos=157:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK72
618-
// CHECK72: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>paramAutoclosureNoescape3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>msg</decl.var.parameter.name>: <decl.var.parameter.type><syntaxtype.attribute.name>@autoclosure</syntaxtype.attribute.name> <syntaxtype.attribute.name>@escaping</syntaxtype.attribute.name> () -&gt; <decl.function.returntype><ref.struct usr="s:SS">String</ref.struct></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
618+
// CHECK72: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>paramAutoclosureNoescape3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>msg</decl.var.parameter.name>: <decl.var.parameter.type><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@autoclosure</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.attribute.builtin><syntaxtype.attribute.name>@escaping</syntaxtype.attribute.name></syntaxtype.attribute.builtin> () -&gt; <decl.function.returntype><ref.struct usr="s:SS">String</ref.struct></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
619619

620620
// RUN: %sourcekitd-test -req=cursor -pos=159:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK73
621621
// CHECK73: <decl.function.free>

test/SourceKit/DocSupport/doc_clang_module.swift.response

+2-2
Original file line numberDiff line numberDiff line change
@@ -6126,7 +6126,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
61266126
key.usr: "c:@F@fooFuncWithBlock",
61276127
key.offset: 3739,
61286128
key.length: 59,
6129-
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithBlock</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>blk</decl.var.parameter.name>: <decl.var.parameter.type>(<syntaxtype.attribute.name>@escaping</syntaxtype.attribute.name> (<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
6129+
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithBlock</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>blk</decl.var.parameter.name>: <decl.var.parameter.type>(<syntaxtype.attribute.builtin><syntaxtype.attribute.name>@escaping</syntaxtype.attribute.name></syntaxtype.attribute.builtin> (<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
61306130
key.entities: [
61316131
{
61326132
key.kind: source.lang.swift.decl.var.local,
@@ -6143,7 +6143,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
61436143
key.usr: "c:@F@fooFuncWithFunctionPointer",
61446144
key.offset: 3799,
61456145
key.length: 70,
6146-
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithFunctionPointer</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>fptr</decl.var.parameter.name>: <decl.var.parameter.type>(<syntaxtype.attribute.name>@escaping</syntaxtype.attribute.name> (<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
6146+
key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithFunctionPointer</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>fptr</decl.var.parameter.name>: <decl.var.parameter.type>(<syntaxtype.attribute.builtin><syntaxtype.attribute.name>@escaping</syntaxtype.attribute.name></syntaxtype.attribute.builtin> (<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
61476147
key.entities: [
61486148
{
61496149
key.kind: source.lang.swift.decl.var.local,

0 commit comments

Comments
 (0)