Skip to content

Commit 3d5cb90

Browse files
authored
Merge pull request #29938 from akyrtzi/annotated-property-wrapper-attribute
[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
2 parents 047476c + 11e79dc commit 3d5cb90

File tree

4 files changed

+8
-12
lines changed

4 files changed

+8
-12
lines changed

lib/AST/Attr.cpp

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

988988
case DAK_Custom: {
989-
Printer.printAttrName("@");
989+
Printer.callPrintNamePre(PrintNameContext::Attribute);
990+
Printer << "@";
990991
const TypeLoc &typeLoc = cast<CustomAttr>(this)->getTypeLoc();
991992
if (auto type = typeLoc.getType())
992993
type->print(Printer, Options);
993994
else
994995
typeLoc.getTypeRepr()->print(Printer, Options);
996+
Printer.printNamePost(PrintNameContext::Attribute);
995997
break;
996998
}
997999

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

tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -468,18 +468,8 @@ void SwiftLangSupport::printFullyAnnotatedGenericReq(
468468
void SwiftLangSupport::printFullyAnnotatedSynthesizedDeclaration(
469469
const swift::ValueDecl *VD, TypeOrExtensionDecl Target,
470470
llvm::raw_ostream &OS) {
471-
// FIXME: Mutable global variable - gross!
472-
static llvm::SmallDenseMap<swift::ValueDecl*,
473-
std::unique_ptr<swift::SynthesizedExtensionAnalyzer>> TargetToAnalyzerMap;
474471
FullyAnnotatedDeclarationPrinter Printer(OS);
475472
PrintOptions PO = PrintOptions::printQuickHelpDeclaration();
476-
NominalTypeDecl *TargetNTD = Target.getBaseNominal();
477-
478-
if (TargetToAnalyzerMap.count(TargetNTD) == 0) {
479-
std::unique_ptr<SynthesizedExtensionAnalyzer> Analyzer(
480-
new SynthesizedExtensionAnalyzer(TargetNTD, PO));
481-
TargetToAnalyzerMap.insert({TargetNTD, std::move(Analyzer)});
482-
}
483473
PO.initForSynthesizedExtension(Target);
484474
PO.PrintAsMember = true;
485475
VD->print(Printer, PO);

0 commit comments

Comments
 (0)