Skip to content

Commit adc65bf

Browse files
committed
[SourceKit] DocInfo: Simplify the type parameter names inside fully annotated decls.
1 parent fa77a7a commit adc65bf

File tree

4 files changed

+26
-15
lines changed

4 files changed

+26
-15
lines changed

test/SourceKit/DocSupport/doc_clang_module.swift.response

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7240,7 +7240,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
72407240
key.doc.full_as_xml: "<Function><Name>init(_:)</Name><USR>s:FEsPs10SetAlgebracuRd__s8Sequencewx7ElementzWd__8Iterator7Element_rFqd__x</USR><Declaration>convenience init&lt;S : Sequence where S.Iterator.Element == Element&gt;(_ sequence: S)</Declaration><Abstract><Para>Creates the set containing all elements of <codeVoice>sequence</codeVoice>.</Para></Abstract></Function>",
72417241
key.offset: 3282,
72427242
key.length: 91,
7243-
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>&lt;<decl.generic_type_param usr=\"s:tFEsPs10SetAlgebracuRd__s8Sequencewx7ElementzWd__8Iterator7Element_rFqd__xL_1SMqd__\"><decl.generic_type_param.name>S</decl.generic_type_param.name> : <decl.generic_type_param.constraint><ref.protocol usr=\"s:Ps8Sequence\">Sequence</ref.protocol></decl.generic_type_param.constraint></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>S.Iterator.Element == Element</decl.generic_type_requirement>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>sequence</decl.var.parameter.name>: <decl.var.parameter.type>S</decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
7243+
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>&lt;<decl.generic_type_param usr=\"s:tFEsPs10SetAlgebracuRd__s8Sequencewx7ElementzWd__8Iterator7Element_rFqd__xL_1SMqd__\"><decl.generic_type_param.name>S</decl.generic_type_param.name> : <decl.generic_type_param.constraint><ref.protocol usr=\"s:Ps8Sequence\">Sequence</ref.protocol></decl.generic_type_param.constraint></decl.generic_type_param> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>S.Iterator.Element == FooRuncingOptions</decl.generic_type_requirement>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>sequence</decl.var.parameter.name>: <decl.var.parameter.type>S</decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
72447244
key.entities: [
72457245
{
72467246
key.kind: source.lang.swift.decl.var.local,
@@ -7259,7 +7259,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
72597259
key.doc.full_as_xml: "<Function><Name>init(arrayLiteral:)</Name><USR>s:FEsPs10SetAlgebracFt12arrayLiteralGSawx7Element__x</USR><Declaration>convenience init(arrayLiteral: Self.Element...)</Declaration><Abstract><Para>Creates a set containing all elements of the given <codeVoice>arrayLiteral</codeVoice>.</Para></Abstract><Discussion><Para>This initializer allows an array literal containing <codeVoice>Self.Element</codeVoice> to represent an instance of the set, wherever it is implied by the type context.</Para></Discussion></Function>",
72607260
key.offset: 3379,
72617261
key.length: 65,
7262-
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>arrayLiteral</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tPs10SetAlgebra4SelfMx\">Self</ref.generic_type_param>.Element</decl.var.parameter.type>...</decl.var.parameter>)</decl.function.constructor>",
7262+
key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>arrayLiteral</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type>...</decl.var.parameter>)</decl.function.constructor>",
72637263
key.entities: [
72647264
{
72657265
key.kind: source.lang.swift.decl.var.local,
@@ -7421,7 +7421,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
74217421
key.doc.full_as_xml: "<Function><Name>element(_:subsumes:)</Name><USR>s:ZFEsPs10SetAlgebra7elementFTwx7Element8subsumeswxS0__Sb</USR><Declaration>static func element(a: Self.Element, subsumes b: Self.Element) -&gt; Bool</Declaration><Abstract><Para>Returns <codeVoice>true</codeVoice> iff <codeVoice>a</codeVoice> subsumes <codeVoice>b</codeVoice>.</Para></Abstract><Discussion><List-Bullet><Item><Para>Equivalent to <codeVoice>([a] as Self).isSupersetOf([b])</codeVoice></Para></Item></List-Bullet></Discussion></Function>",
74227422
key.offset: 3813,
74237423
key.length: 82,
7424-
key.fully_annotated_decl: "<decl.function.method.static><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>element</decl.name>(<decl.var.parameter><decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tPs10SetAlgebra4SelfMx\">Self</ref.generic_type_param>.Element</decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>subsumes</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tPs10SetAlgebra4SelfMx\">Self</ref.generic_type_param>.Element</decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.static>",
7424+
key.fully_annotated_decl: "<decl.function.method.static><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>element</decl.name>(<decl.var.parameter><decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>subsumes</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.static>",
74257425
key.entities: [
74267426
{
74277427
key.kind: source.lang.swift.decl.var.local,
@@ -7447,7 +7447,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
74477447
key.doc.full_as_xml: "<Function><Name>element(_:isDisjointWith:)</Name><USR>s:ZFEsPs10SetAlgebra7elementFTwx7Element14isDisjointWithwxS0__Sb</USR><Declaration>static func element(a: Self.Element, isDisjointWith b: Self.Element) -&gt; Bool</Declaration><Abstract><Para>Returns <codeVoice>true</codeVoice> iff <codeVoice>a</codeVoice> is disjoint with <codeVoice>b</codeVoice>.</Para></Abstract><Discussion><Para>Two elements are disjoint when neither one subsumes the other.</Para><See><Para><codeVoice>Self.element(_, subsumes:_)</codeVoice></Para></See></Discussion></Function>",
74487448
key.offset: 3901,
74497449
key.length: 88,
7450-
key.fully_annotated_decl: "<decl.function.method.static><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>element</decl.name>(<decl.var.parameter><decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tPs10SetAlgebra4SelfMx\">Self</ref.generic_type_param>.Element</decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>isDisjointWith</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tPs10SetAlgebra4SelfMx\">Self</ref.generic_type_param>.Element</decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.static>",
7450+
key.fully_annotated_decl: "<decl.function.method.static><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>element</decl.name>(<decl.var.parameter><decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>isDisjointWith</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.static>",
74517451
key.entities: [
74527452
{
74537453
key.kind: source.lang.swift.decl.var.local,

tools/SourceKit/lib/SwiftLang/SwiftDocSupport.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,11 @@ static bool initDocEntityInfo(const Decl *D, const Decl *SynthesizedTarget,
366366

367367
if (auto *VD = dyn_cast<ValueDecl>(D)) {
368368
llvm::raw_svector_ostream OS(Info.FullyAnnotatedDecl);
369-
SwiftLangSupport::printFullyAnnotatedDeclaration(VD, Type(), OS);
369+
if (SynthesizedTarget)
370+
SwiftLangSupport::printFullyAnnotatedSynthesizedDeclaration(VD,
371+
(NominalTypeDecl*)SynthesizedTarget, OS);
372+
else
373+
SwiftLangSupport::printFullyAnnotatedDeclaration(VD, Type(), OS);
370374
}
371375
}
372376

tools/SourceKit/lib/SwiftLang/SwiftLangSupport.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,10 @@ class SwiftLangSupport : public LangSupport {
269269
swift::Type BaseTy,
270270
llvm::raw_ostream &OS);
271271

272-
static void printFullyAnnotatedSynthesizedExtension(swift::ExtensionDecl * Extension,
273-
swift::NominalTypeDecl *Target,
274-
llvm::raw_ostream &OS);
272+
static void printFullyAnnotatedSynthesizedDeclaration(
273+
const swift::ValueDecl *VD,
274+
swift::NominalTypeDecl *Target,
275+
llvm::raw_ostream &OS);
275276

276277
/// Tries to resolve the path to the real file-system path. If it fails it
277278
/// returns the original path;

tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -434,16 +434,22 @@ void SwiftLangSupport::printFullyAnnotatedDeclaration(const ValueDecl *VD,
434434
VD->print(Printer, PO);
435435
}
436436

437-
438437
void SwiftLangSupport::
439-
printFullyAnnotatedSynthesizedExtension(swift::ExtensionDecl * Extension,
440-
swift::NominalTypeDecl *Target,
441-
llvm::raw_ostream &OS) {
438+
printFullyAnnotatedSynthesizedDeclaration(const swift::ValueDecl *VD,
439+
swift::NominalTypeDecl *Target,
440+
llvm::raw_ostream &OS) {
441+
static llvm::SmallDenseMap<swift::ValueDecl*,
442+
std::unique_ptr<swift::SynthesizedExtensionAnalyzer>> TargetToAnalyzerMap;
442443
FullyAnnotatedDeclarationPrinter Printer(OS);
443444
PrintOptions PO = PrintOptions::printQuickHelpDeclaration();
444-
SynthesizedExtensionAnalyzer Analyzer(Target, PO);
445-
PO.initArchetypeTransformerForSynthesizedExtensions(Target, &Analyzer);
446-
Extension->print(Printer, PO);
445+
if (TargetToAnalyzerMap.count(Target) == 0) {
446+
std::unique_ptr<SynthesizedExtensionAnalyzer> Analyzer(
447+
new SynthesizedExtensionAnalyzer(Target, PO));
448+
TargetToAnalyzerMap.insert({Target, std::move(Analyzer)});
449+
}
450+
auto *Analyzer = TargetToAnalyzerMap.find(Target)->getSecond().get();
451+
PO.initArchetypeTransformerForSynthesizedExtensions(Target, Analyzer);
452+
VD->print(Printer, PO);
447453
}
448454

449455
template <typename FnTy>

0 commit comments

Comments
 (0)