[SourceKit] DocInfo: Simplify the type parameter names inside fully annotated decls.

This commit is contained in:
Xi Ge
2016-04-01 11:43:26 -07:00
parent fa77a7afc9
commit adc65bf609
4 changed files with 26 additions and 15 deletions

View File

@@ -7240,7 +7240,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
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>",
key.offset: 3282,
key.length: 91,
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>",
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>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,
@@ -7259,7 +7259,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
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>",
key.offset: 3379,
key.length: 65,
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>",
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>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,
@@ -7421,7 +7421,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
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>",
key.offset: 3813,
key.length: 82,
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>",
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>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,
@@ -7447,7 +7447,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
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>",
key.offset: 3901,
key.length: 88,
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>",
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>",
key.entities: [
{
key.kind: source.lang.swift.decl.var.local,

View File

@@ -366,6 +366,10 @@ static bool initDocEntityInfo(const Decl *D, const Decl *SynthesizedTarget,
if (auto *VD = dyn_cast<ValueDecl>(D)) {
llvm::raw_svector_ostream OS(Info.FullyAnnotatedDecl);
if (SynthesizedTarget)
SwiftLangSupport::printFullyAnnotatedSynthesizedDeclaration(VD,
(NominalTypeDecl*)SynthesizedTarget, OS);
else
SwiftLangSupport::printFullyAnnotatedDeclaration(VD, Type(), OS);
}
}

View File

@@ -269,7 +269,8 @@ public:
swift::Type BaseTy,
llvm::raw_ostream &OS);
static void printFullyAnnotatedSynthesizedExtension(swift::ExtensionDecl * Extension,
static void printFullyAnnotatedSynthesizedDeclaration(
const swift::ValueDecl *VD,
swift::NominalTypeDecl *Target,
llvm::raw_ostream &OS);

View File

@@ -434,16 +434,22 @@ void SwiftLangSupport::printFullyAnnotatedDeclaration(const ValueDecl *VD,
VD->print(Printer, PO);
}
void SwiftLangSupport::
printFullyAnnotatedSynthesizedExtension(swift::ExtensionDecl * Extension,
printFullyAnnotatedSynthesizedDeclaration(const swift::ValueDecl *VD,
swift::NominalTypeDecl *Target,
llvm::raw_ostream &OS) {
static llvm::SmallDenseMap<swift::ValueDecl*,
std::unique_ptr<swift::SynthesizedExtensionAnalyzer>> TargetToAnalyzerMap;
FullyAnnotatedDeclarationPrinter Printer(OS);
PrintOptions PO = PrintOptions::printQuickHelpDeclaration();
SynthesizedExtensionAnalyzer Analyzer(Target, PO);
PO.initArchetypeTransformerForSynthesizedExtensions(Target, &Analyzer);
Extension->print(Printer, PO);
if (TargetToAnalyzerMap.count(Target) == 0) {
std::unique_ptr<SynthesizedExtensionAnalyzer> Analyzer(
new SynthesizedExtensionAnalyzer(Target, PO));
TargetToAnalyzerMap.insert({Target, std::move(Analyzer)});
}
auto *Analyzer = TargetToAnalyzerMap.find(Target)->getSecond().get();
PO.initArchetypeTransformerForSynthesizedExtensions(Target, Analyzer);
VD->print(Printer, PO);
}
template <typename FnTy>