Skip to content

Commit 8cfc5ed

Browse files
committed
[ASTPrinter] When printing a property wrapper attribute name for the fully annotated declaration, make sure that it is wrapped within the syntaxtype.attribute.name tag
1 parent 0f0a908 commit 8cfc5ed

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

lib/AST/Attr.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -973,12 +973,14 @@ bool DeclAttribute::printImpl(ASTPrinter &Printer, const PrintOptions &Options,
973973
}
974974

975975
case DAK_Custom: {
976-
Printer.printAttrName("@");
976+
Printer.callPrintNamePre(PrintNameContext::Attribute);
977+
Printer << "@";
977978
const TypeLoc &typeLoc = cast<CustomAttr>(this)->getTypeLoc();
978979
if (auto type = typeLoc.getType())
979980
type->print(Printer, Options);
980981
else
981982
typeLoc.getTypeRepr()->print(Printer, Options);
983+
Printer.printNamePost(PrintNameContext::Attribute);
982984
break;
983985
}
984986

test/SourceKit/CursorInfo/cursor_info_property_wrappers.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,7 @@ struct OtherStruct {
6767
// CHECK2_DECL: source.lang.swift.decl.var.global (34:5-34:14)
6868
// CHECK2_REF: source.lang.swift.ref.var.global (34:5-34:14)
6969
// CHECK2-NEXT: someValue
70+
71+
// RUN: %sourcekitd-test -req=cursor -cursor-action -pos=17:9 %s -- %s | %FileCheck -check-prefixes=CHECK_DOC_XML %s
72+
// CHECK_DOC_XML: <Declaration>@<Type usr="s:29cursor_info_property_wrappers7WrapperV">Wrapper</Type> var foo: <Type usr="s:Si">Int</Type> { get set }</Declaration>
73+
// CHECK_DOC_XML: <decl.var.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@<ref.struct usr="s:29cursor_info_property_wrappers7WrapperV">Wrapper</ref.struct></syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>foo</decl.name>: <decl.var.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>

test/SourceKit/CursorInfo/function_builder.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func testAcceptColorTagged(i: Int, s: String) {
7171
// CALL_BUILDERFUNC-NEXT: <Result> (body: (Color) -> Result) -> ()
7272
// CALL_BUILDERFUNC-NEXT: $s4bodyyx11BuilderTest5ColorOXE_tcluD
7373
// CALL_BUILDERFUNC-NEXT: <Declaration>func acceptColorTagged&lt;Result&gt;(@<Type usr="s:11BuilderTest06TaggedA0V">TaggedBuilder</Type>&lt;<Type usr="s:11BuilderTest5ColorO">Color</Type>&gt; body: (<Type usr="s:11BuilderTest5ColorO">Color</Type>) -&gt; <Type usr="s:11BuilderTest17acceptColorTagged4bodyyxAA0D0OXE_tlF6ResultL_xmfp">Result</Type>)</Declaration>
74-
// CALL_BUILDERFUNC-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>acceptColorTagged</decl.name>&lt;<decl.generic_type_param usr="s:11BuilderTest17acceptColorTagged4bodyyxAA0D0OXE_tlF6ResultL_xmfp"><decl.generic_type_param.name>Result</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@</syntaxtype.attribute.name><ref.struct usr="s:11BuilderTest06TaggedA0V">TaggedBuilder</ref.struct>&lt;<ref.enum usr="s:11BuilderTest5ColorO">Color</ref.enum>&gt;</syntaxtype.attribute.builtin> <decl.var.parameter.argument_label>body</decl.var.parameter.argument_label>: <decl.var.parameter.type>(<decl.var.parameter><decl.var.parameter.type><ref.enum usr="s:11BuilderTest5ColorO">Color</ref.enum></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.generic_type_param usr="s:11BuilderTest17acceptColorTagged4bodyyxAA0D0OXE_tlF6ResultL_xmfp">Result</ref.generic_type_param></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
74+
// CALL_BUILDERFUNC-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>acceptColorTagged</decl.name>&lt;<decl.generic_type_param usr="s:11BuilderTest17acceptColorTagged4bodyyxAA0D0OXE_tlF6ResultL_xmfp"><decl.generic_type_param.name>Result</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@<ref.struct usr="s:11BuilderTest06TaggedA0V">TaggedBuilder</ref.struct>&lt;<ref.enum usr="s:11BuilderTest5ColorO">Color</ref.enum>&gt;</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <decl.var.parameter.argument_label>body</decl.var.parameter.argument_label>: <decl.var.parameter.type>(<decl.var.parameter><decl.var.parameter.type><ref.enum usr="s:11BuilderTest5ColorO">Color</ref.enum></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.generic_type_param usr="s:11BuilderTest17acceptColorTagged4bodyyxAA0D0OXE_tlF6ResultL_xmfp">Result</ref.generic_type_param></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
7575

7676
// Closure parameter - decl-site.
7777
// RUN: %sourcekitd-test -req=cursor -pos=40:23 %s -- %s -module-name BuilderTest | %FileCheck %s --check-prefix=CLOSUREPARAM_DECL

0 commit comments

Comments
 (0)