mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[SourceKit] Add documentation range in structure (SR-2487) (#11264)
This commit is contained in:
@@ -67,6 +67,8 @@ struct RawComment {
|
|||||||
bool isEmpty() const {
|
bool isEmpty() const {
|
||||||
return Comments.empty();
|
return Comments.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CharSourceRange getCharSourceRange();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CommentInfo {
|
struct CommentInfo {
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ struct SyntaxStructureNode {
|
|||||||
CharSourceRange BodyRange;
|
CharSourceRange BodyRange;
|
||||||
CharSourceRange NameRange;
|
CharSourceRange NameRange;
|
||||||
CharSourceRange TypeRange;
|
CharSourceRange TypeRange;
|
||||||
|
CharSourceRange DocRange;
|
||||||
std::vector<CharSourceRange> InheritedTypeRanges;
|
std::vector<CharSourceRange> InheritedTypeRanges;
|
||||||
std::vector<SyntaxStructureElement> Elements;
|
std::vector<SyntaxStructureElement> Elements;
|
||||||
|
|
||||||
|
|||||||
@@ -247,3 +247,18 @@ StringRef Decl::getBriefComment() const {
|
|||||||
Context.setBriefComment(this, Result);
|
Context.setBriefComment(this, Result);
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CharSourceRange RawComment::getCharSourceRange() {
|
||||||
|
if (this->isEmpty()) {
|
||||||
|
return CharSourceRange();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto Start = this->Comments.front().Range.getStart();
|
||||||
|
if (Start.isInvalid()) {
|
||||||
|
return CharSourceRange();
|
||||||
|
}
|
||||||
|
auto End = this->Comments.back().Range.getEnd();
|
||||||
|
auto Length = (char *)End.getOpaquePointerValue() -
|
||||||
|
(char* )Start.getOpaquePointerValue();
|
||||||
|
return CharSourceRange(Start, Length);
|
||||||
|
}
|
||||||
|
|||||||
@@ -418,6 +418,12 @@ CharSourceRange parameterNameRangeOfCallArg(const TupleExpr *TE,
|
|||||||
return CharSourceRange();
|
return CharSourceRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setDecl(SyntaxStructureNode &N, Decl *D) {
|
||||||
|
N.Dcl = D;
|
||||||
|
N.Attrs = D->getAttrs();
|
||||||
|
N.DocRange = D->getRawComment().getCharSourceRange();
|
||||||
|
}
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|
||||||
bool SyntaxModelContext::walk(SyntaxModelWalker &Walker) {
|
bool SyntaxModelContext::walk(SyntaxModelWalker &Walker) {
|
||||||
@@ -753,7 +759,7 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
} else {
|
} else {
|
||||||
// Pass Function / Method structure node.
|
// Pass Function / Method structure node.
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = D;
|
setDecl(SN, D);
|
||||||
const DeclContext *DC = AFD->getDeclContext();
|
const DeclContext *DC = AFD->getDeclContext();
|
||||||
if (DC->isTypeContext()) {
|
if (DC->isTypeContext()) {
|
||||||
if (FD && FD->isStatic()) {
|
if (FD && FD->isStatic()) {
|
||||||
@@ -772,12 +778,11 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
AFD->getBodySourceRange());
|
AFD->getBodySourceRange());
|
||||||
SN.NameRange = charSourceRangeFromSourceRange(SM,
|
SN.NameRange = charSourceRangeFromSourceRange(SM,
|
||||||
AFD->getSignatureSourceRange());
|
AFD->getSignatureSourceRange());
|
||||||
SN.Attrs = AFD->getAttrs();
|
|
||||||
pushStructureNode(SN, AFD);
|
pushStructureNode(SN, AFD);
|
||||||
}
|
}
|
||||||
} else if (auto *NTD = dyn_cast<NominalTypeDecl>(D)) {
|
} else if (auto *NTD = dyn_cast<NominalTypeDecl>(D)) {
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = D;
|
setDecl(SN, D);
|
||||||
SN.Kind = syntaxStructureKindFromNominalTypeDecl(NTD);
|
SN.Kind = syntaxStructureKindFromNominalTypeDecl(NTD);
|
||||||
SN.Range = charSourceRangeFromSourceRange(SM, NTD->getSourceRange());
|
SN.Range = charSourceRangeFromSourceRange(SM, NTD->getSourceRange());
|
||||||
SN.BodyRange = innerCharSourceRangeFromSourceRange(SM, NTD->getBraces());
|
SN.BodyRange = innerCharSourceRangeFromSourceRange(SM, NTD->getBraces());
|
||||||
@@ -792,12 +797,11 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
SN.Elements.emplace_back(SyntaxStructureElementKind::TypeRef, TR);
|
SN.Elements.emplace_back(SyntaxStructureElementKind::TypeRef, TR);
|
||||||
}
|
}
|
||||||
|
|
||||||
SN.Attrs = NTD->getAttrs();
|
|
||||||
pushStructureNode(SN, NTD);
|
pushStructureNode(SN, NTD);
|
||||||
|
|
||||||
} else if (auto *ED = dyn_cast<ExtensionDecl>(D)) {
|
} else if (auto *ED = dyn_cast<ExtensionDecl>(D)) {
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = D;
|
setDecl(SN, D);
|
||||||
SN.Kind = SyntaxStructureKind::Extension;
|
SN.Kind = SyntaxStructureKind::Extension;
|
||||||
SN.Range = charSourceRangeFromSourceRange(SM, ED->getSourceRange());
|
SN.Range = charSourceRangeFromSourceRange(SM, ED->getSourceRange());
|
||||||
SN.BodyRange = innerCharSourceRangeFromSourceRange(SM, ED->getBraces());
|
SN.BodyRange = innerCharSourceRangeFromSourceRange(SM, ED->getBraces());
|
||||||
@@ -811,7 +815,6 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
SN.Elements.emplace_back(SyntaxStructureElementKind::TypeRef, TR);
|
SN.Elements.emplace_back(SyntaxStructureElementKind::TypeRef, TR);
|
||||||
}
|
}
|
||||||
|
|
||||||
SN.Attrs = ED->getAttrs();
|
|
||||||
pushStructureNode(SN, ED);
|
pushStructureNode(SN, ED);
|
||||||
|
|
||||||
} else if (auto *PD = dyn_cast<ParamDecl>(D)) {
|
} else if (auto *PD = dyn_cast<ParamDecl>(D)) {
|
||||||
@@ -832,7 +835,7 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
const DeclContext *DC = VD->getDeclContext();
|
const DeclContext *DC = VD->getDeclContext();
|
||||||
if (DC->isTypeContext() || DC->isModuleScopeContext()) {
|
if (DC->isTypeContext() || DC->isModuleScopeContext()) {
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = D;
|
setDecl(SN, D);
|
||||||
SourceRange SR;
|
SourceRange SR;
|
||||||
if (auto *PBD = VD->getParentPatternBinding())
|
if (auto *PBD = VD->getParentPatternBinding())
|
||||||
SR = PBD->getSourceRange();
|
SR = PBD->getSourceRange();
|
||||||
@@ -863,7 +866,6 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
} else {
|
} else {
|
||||||
SN.Kind = SyntaxStructureKind::GlobalVariable;
|
SN.Kind = SyntaxStructureKind::GlobalVariable;
|
||||||
}
|
}
|
||||||
SN.Attrs = VD->getAttrs();
|
|
||||||
pushStructureNode(SN, VD);
|
pushStructureNode(SN, VD);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -915,7 +917,7 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
|
|
||||||
} else if (auto *EnumCaseD = dyn_cast<EnumCaseDecl>(D)) {
|
} else if (auto *EnumCaseD = dyn_cast<EnumCaseDecl>(D)) {
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = D;
|
setDecl(SN, D);
|
||||||
SN.Kind = SyntaxStructureKind::EnumCase;
|
SN.Kind = SyntaxStructureKind::EnumCase;
|
||||||
SN.Range = charSourceRangeFromSourceRange(SM, D->getSourceRange());
|
SN.Range = charSourceRangeFromSourceRange(SM, D->getSourceRange());
|
||||||
|
|
||||||
@@ -939,7 +941,7 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
if (EnumElemD->getName().empty())
|
if (EnumElemD->getName().empty())
|
||||||
continue;
|
continue;
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = EnumElemD;
|
setDecl(SN, EnumElemD);
|
||||||
SN.Kind = SyntaxStructureKind::EnumElement;
|
SN.Kind = SyntaxStructureKind::EnumElement;
|
||||||
SN.Range = charSourceRangeFromSourceRange(SM,
|
SN.Range = charSourceRangeFromSourceRange(SM,
|
||||||
EnumElemD->getSourceRange());
|
EnumElemD->getSourceRange());
|
||||||
@@ -956,23 +958,21 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
|
|||||||
}
|
}
|
||||||
} else if (auto *TypeAliasD = dyn_cast<TypeAliasDecl>(D)) {
|
} else if (auto *TypeAliasD = dyn_cast<TypeAliasDecl>(D)) {
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = TypeAliasD;
|
setDecl(SN, D);
|
||||||
SN.Kind = SyntaxStructureKind::TypeAlias;
|
SN.Kind = SyntaxStructureKind::TypeAlias;
|
||||||
SN.Range = charSourceRangeFromSourceRange(SM,
|
SN.Range = charSourceRangeFromSourceRange(SM,
|
||||||
TypeAliasD->getSourceRange());
|
TypeAliasD->getSourceRange());
|
||||||
SN.NameRange = CharSourceRange(TypeAliasD->getNameLoc(),
|
SN.NameRange = CharSourceRange(TypeAliasD->getNameLoc(),
|
||||||
TypeAliasD->getName().getLength());
|
TypeAliasD->getName().getLength());
|
||||||
SN.Attrs = TypeAliasD->getAttrs();
|
|
||||||
pushStructureNode(SN, TypeAliasD);
|
pushStructureNode(SN, TypeAliasD);
|
||||||
} else if (auto *SubscriptD = dyn_cast<SubscriptDecl>(D)) {
|
} else if (auto *SubscriptD = dyn_cast<SubscriptDecl>(D)) {
|
||||||
SyntaxStructureNode SN;
|
SyntaxStructureNode SN;
|
||||||
SN.Dcl = SubscriptD;
|
setDecl(SN, D);
|
||||||
SN.Kind = SyntaxStructureKind::Subscript;
|
SN.Kind = SyntaxStructureKind::Subscript;
|
||||||
SN.Range = charSourceRangeFromSourceRange(SM,
|
SN.Range = charSourceRangeFromSourceRange(SM,
|
||||||
SubscriptD->getSourceRange());
|
SubscriptD->getSourceRange());
|
||||||
SN.BodyRange = innerCharSourceRangeFromSourceRange(SM,
|
SN.BodyRange = innerCharSourceRangeFromSourceRange(SM,
|
||||||
SubscriptD->getBracesRange());
|
SubscriptD->getBracesRange());
|
||||||
SN.Attrs = SubscriptD->getAttrs();
|
|
||||||
pushStructureNode(SN, SubscriptD);
|
pushStructureNode(SN, SubscriptD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4116,6 +4116,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.namelength: 8,
|
key.namelength: 8,
|
||||||
key.bodyoffset: 237,
|
key.bodyoffset: 237,
|
||||||
key.bodylength: 106,
|
key.bodylength: 106,
|
||||||
|
key.docoffset: 157,
|
||||||
|
key.doclength: 26,
|
||||||
key.inheritedtypes: [
|
key.inheritedtypes: [
|
||||||
{
|
{
|
||||||
key.name: "RawRepresentable"
|
key.name: "RawRepresentable"
|
||||||
@@ -4199,7 +4201,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.length: 31,
|
key.length: 31,
|
||||||
key.typename: "FooEnum1",
|
key.typename: "FooEnum1",
|
||||||
key.nameoffset: 384,
|
key.nameoffset: 384,
|
||||||
key.namelength: 9
|
key.namelength: 9,
|
||||||
|
key.docoffset: 346,
|
||||||
|
key.doclength: 27
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.struct,
|
key.kind: source.lang.swift.decl.struct,
|
||||||
@@ -4423,6 +4427,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.namelength: 19,
|
key.namelength: 19,
|
||||||
key.bodyoffset: 970,
|
key.bodyoffset: 970,
|
||||||
key.bodylength: 133,
|
key.bodylength: 133,
|
||||||
|
key.docoffset: 894,
|
||||||
|
key.doclength: 37,
|
||||||
key.inheritedtypes: [
|
key.inheritedtypes: [
|
||||||
{
|
{
|
||||||
key.name: "Int"
|
key.name: "Int"
|
||||||
@@ -4502,6 +4508,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.namelength: 17,
|
key.namelength: 17,
|
||||||
key.bodyoffset: 1186,
|
key.bodyoffset: 1186,
|
||||||
key.bodylength: 210,
|
key.bodylength: 210,
|
||||||
|
key.docoffset: 1106,
|
||||||
|
key.doclength: 35,
|
||||||
key.inheritedtypes: [
|
key.inheritedtypes: [
|
||||||
{
|
{
|
||||||
key.name: "OptionSet"
|
key.name: "OptionSet"
|
||||||
@@ -4803,7 +4811,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 1974,
|
key.offset: 1974,
|
||||||
key.length: 29,
|
key.length: 29,
|
||||||
key.nameoffset: 1984,
|
key.nameoffset: 1984,
|
||||||
key.namelength: 11
|
key.namelength: 11,
|
||||||
|
key.docoffset: 1938,
|
||||||
|
key.doclength: 29
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.var.global,
|
key.kind: source.lang.swift.decl.var.global,
|
||||||
@@ -4814,7 +4824,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.length: 20,
|
key.length: 20,
|
||||||
key.typename: "Int32",
|
key.typename: "Int32",
|
||||||
key.nameoffset: 2043,
|
key.nameoffset: 2043,
|
||||||
key.namelength: 9
|
key.namelength: 9,
|
||||||
|
key.docoffset: 2005,
|
||||||
|
key.doclength: 27
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.free,
|
key.kind: source.lang.swift.decl.function.free,
|
||||||
@@ -4824,6 +4836,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.length: 34,
|
key.length: 34,
|
||||||
key.nameoffset: 2099,
|
key.nameoffset: 2099,
|
||||||
key.namelength: 20,
|
key.namelength: 20,
|
||||||
|
key.docoffset: 2061,
|
||||||
|
key.doclength: 26,
|
||||||
key.substructure: [
|
key.substructure: [
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.var.parameter,
|
key.kind: source.lang.swift.decl.var.parameter,
|
||||||
@@ -4967,7 +4981,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 2627,
|
key.offset: 2627,
|
||||||
key.length: 26,
|
key.length: 26,
|
||||||
key.nameoffset: 2632,
|
key.nameoffset: 2632,
|
||||||
key.namelength: 21
|
key.namelength: 21,
|
||||||
|
key.docoffset: 2557,
|
||||||
|
key.doclength: 62
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.free,
|
key.kind: source.lang.swift.decl.function.free,
|
||||||
@@ -4985,7 +5001,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 2800,
|
key.offset: 2800,
|
||||||
key.length: 26,
|
key.length: 26,
|
||||||
key.nameoffset: 2805,
|
key.nameoffset: 2805,
|
||||||
key.namelength: 21
|
key.namelength: 21,
|
||||||
|
key.docoffset: 2733,
|
||||||
|
key.doclength: 59
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.free,
|
key.kind: source.lang.swift.decl.function.free,
|
||||||
@@ -4994,7 +5012,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 2888,
|
key.offset: 2888,
|
||||||
key.length: 26,
|
key.length: 26,
|
||||||
key.nameoffset: 2893,
|
key.nameoffset: 2893,
|
||||||
key.namelength: 21
|
key.namelength: 21,
|
||||||
|
key.docoffset: 2828,
|
||||||
|
key.doclength: 53
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.free,
|
key.kind: source.lang.swift.decl.function.free,
|
||||||
@@ -5003,7 +5023,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 2982,
|
key.offset: 2982,
|
||||||
key.length: 26,
|
key.length: 26,
|
||||||
key.nameoffset: 2987,
|
key.nameoffset: 2987,
|
||||||
key.namelength: 21
|
key.namelength: 21,
|
||||||
|
key.docoffset: 2916,
|
||||||
|
key.doclength: 59
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.free,
|
key.kind: source.lang.swift.decl.function.free,
|
||||||
@@ -5013,6 +5035,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.length: 58,
|
key.length: 58,
|
||||||
key.nameoffset: 3072,
|
key.nameoffset: 3072,
|
||||||
key.namelength: 44,
|
key.namelength: 44,
|
||||||
|
key.docoffset: 3010,
|
||||||
|
key.doclength: 50,
|
||||||
key.substructure: [
|
key.substructure: [
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.var.parameter,
|
key.kind: source.lang.swift.decl.var.parameter,
|
||||||
@@ -5036,6 +5060,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.namelength: 15,
|
key.namelength: 15,
|
||||||
key.bodyoffset: 3193,
|
key.bodyoffset: 3193,
|
||||||
key.bodylength: 545,
|
key.bodylength: 545,
|
||||||
|
key.docoffset: 3127,
|
||||||
|
key.doclength: 33,
|
||||||
key.substructure: [
|
key.substructure: [
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.method.instance,
|
key.kind: source.lang.swift.decl.function.method.instance,
|
||||||
@@ -5044,7 +5070,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 3258,
|
key.offset: 3258,
|
||||||
key.length: 19,
|
key.length: 19,
|
||||||
key.nameoffset: 3263,
|
key.nameoffset: 3263,
|
||||||
key.namelength: 14
|
key.namelength: 14,
|
||||||
|
key.docoffset: 3204,
|
||||||
|
key.doclength: 43
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.method.instance,
|
key.kind: source.lang.swift.decl.function.method.instance,
|
||||||
@@ -5053,7 +5081,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 3363,
|
key.offset: 3363,
|
||||||
key.length: 40,
|
key.length: 40,
|
||||||
key.nameoffset: 3368,
|
key.nameoffset: 3368,
|
||||||
key.namelength: 35
|
key.namelength: 35,
|
||||||
|
key.docoffset: 3288,
|
||||||
|
key.doclength: 64
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.method.instance,
|
key.kind: source.lang.swift.decl.function.method.instance,
|
||||||
@@ -5062,7 +5092,9 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.offset: 3503,
|
key.offset: 3503,
|
||||||
key.length: 40,
|
key.length: 40,
|
||||||
key.nameoffset: 3508,
|
key.nameoffset: 3508,
|
||||||
key.namelength: 35
|
key.namelength: 35,
|
||||||
|
key.docoffset: 3414,
|
||||||
|
key.doclength: 77
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.method.static,
|
key.kind: source.lang.swift.decl.function.method.static,
|
||||||
@@ -5243,6 +5275,8 @@ public class FooOverlayClassDerived : Foo.FooOverlayClassBase {
|
|||||||
key.namelength: 15,
|
key.namelength: 15,
|
||||||
key.bodyoffset: 4192,
|
key.bodyoffset: 4192,
|
||||||
key.bodylength: 422,
|
key.bodylength: 422,
|
||||||
|
key.docoffset: 4096,
|
||||||
|
key.doclength: 33,
|
||||||
key.inheritedtypes: [
|
key.inheritedtypes: [
|
||||||
{
|
{
|
||||||
key.name: "FooClassBase"
|
key.name: "FooClassBase"
|
||||||
|
|||||||
@@ -222,7 +222,9 @@ public protocol SameNameProtocol {
|
|||||||
key.nameoffset: 179,
|
key.nameoffset: 179,
|
||||||
key.namelength: 8,
|
key.namelength: 8,
|
||||||
key.bodyoffset: 189,
|
key.bodyoffset: 189,
|
||||||
key.bodylength: 1
|
key.bodylength: 1,
|
||||||
|
key.docoffset: 106,
|
||||||
|
key.doclength: 62
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.protocol,
|
key.kind: source.lang.swift.decl.protocol,
|
||||||
|
|||||||
@@ -390,6 +390,8 @@ internal enum Colors {
|
|||||||
key.namelength: 19,
|
key.namelength: 19,
|
||||||
key.bodyoffset: 200,
|
key.bodyoffset: 200,
|
||||||
key.bodylength: 51,
|
key.bodylength: 51,
|
||||||
|
key.docoffset: 139,
|
||||||
|
key.doclength: 27,
|
||||||
key.substructure: [
|
key.substructure: [
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.function.method.instance,
|
key.kind: source.lang.swift.decl.function.method.instance,
|
||||||
@@ -498,7 +500,9 @@ internal enum Colors {
|
|||||||
key.length: 13,
|
key.length: 13,
|
||||||
key.typename: "Int",
|
key.typename: "Int",
|
||||||
key.nameoffset: 512,
|
key.nameoffset: 512,
|
||||||
key.namelength: 4
|
key.namelength: 4,
|
||||||
|
key.docoffset: 473,
|
||||||
|
key.doclength: 22
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key.kind: source.lang.swift.decl.var.instance,
|
key.kind: source.lang.swift.decl.var.instance,
|
||||||
@@ -509,7 +513,9 @@ internal enum Colors {
|
|||||||
key.length: 24,
|
key.length: 24,
|
||||||
key.typename: "(Int, Int)",
|
key.typename: "(Int, Int)",
|
||||||
key.nameoffset: 564,
|
key.nameoffset: 564,
|
||||||
key.namelength: 2
|
key.namelength: 2,
|
||||||
|
key.docoffset: 527,
|
||||||
|
key.doclength: 19
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -211,6 +211,8 @@ public:
|
|||||||
unsigned NameLength,
|
unsigned NameLength,
|
||||||
unsigned BodyOffset,
|
unsigned BodyOffset,
|
||||||
unsigned BodyLength,
|
unsigned BodyLength,
|
||||||
|
unsigned DocOffset,
|
||||||
|
unsigned DocLength,
|
||||||
StringRef DisplayName,
|
StringRef DisplayName,
|
||||||
StringRef TypeName,
|
StringRef TypeName,
|
||||||
StringRef RuntimeName,
|
StringRef RuntimeName,
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ KEY(BodyOffset, "key.bodyoffset")
|
|||||||
KEY(BodyLength, "key.bodylength")
|
KEY(BodyLength, "key.bodylength")
|
||||||
KEY(ThrowOffset, "key.throwoffset")
|
KEY(ThrowOffset, "key.throwoffset")
|
||||||
KEY(ThrowLength, "key.throwlength")
|
KEY(ThrowLength, "key.throwlength")
|
||||||
|
KEY(DocOffset, "key.docoffset")
|
||||||
|
KEY(DocLength, "key.doclength")
|
||||||
KEY(IsLocal, "key.is_local")
|
KEY(IsLocal, "key.is_local")
|
||||||
KEY(InheritedTypes, "key.inheritedtypes")
|
KEY(InheritedTypes, "key.inheritedtypes")
|
||||||
KEY(Attributes, "key.attributes")
|
KEY(Attributes, "key.attributes")
|
||||||
|
|||||||
@@ -1027,6 +1027,15 @@ public:
|
|||||||
BodyOffset = BodyEnd = 0;
|
BodyOffset = BodyEnd = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned DocOffset = 0;
|
||||||
|
unsigned DocEnd = 0;
|
||||||
|
if (Node.DocRange.isValid()) {
|
||||||
|
DocOffset = SrcManager.getLocOffsetInBuffer(Node.DocRange.getStart(),
|
||||||
|
BufferID);
|
||||||
|
DocEnd = SrcManager.getLocOffsetInBuffer(Node.DocRange.getEnd(),
|
||||||
|
BufferID);
|
||||||
|
}
|
||||||
|
|
||||||
UIdent Kind = SwiftLangSupport::getUIDForSyntaxStructureKind(Node.Kind);
|
UIdent Kind = SwiftLangSupport::getUIDForSyntaxStructureKind(Node.Kind);
|
||||||
UIdent AccessLevel;
|
UIdent AccessLevel;
|
||||||
UIdent SetterAccessLevel;
|
UIdent SetterAccessLevel;
|
||||||
@@ -1080,6 +1089,7 @@ public:
|
|||||||
Kind, AccessLevel, SetterAccessLevel,
|
Kind, AccessLevel, SetterAccessLevel,
|
||||||
NameStart, NameEnd - NameStart,
|
NameStart, NameEnd - NameStart,
|
||||||
BodyOffset, BodyEnd - BodyOffset,
|
BodyOffset, BodyEnd - BodyOffset,
|
||||||
|
DocOffset, DocEnd - DocOffset,
|
||||||
DisplayName,
|
DisplayName,
|
||||||
TypeName, RuntimeName,
|
TypeName, RuntimeName,
|
||||||
SelectorName,
|
SelectorName,
|
||||||
@@ -1144,7 +1154,7 @@ public:
|
|||||||
UIdent Kind = SwiftLangSupport::getUIDForSyntaxNodeKind(Node.Kind);
|
UIdent Kind = SwiftLangSupport::getUIDForSyntaxNodeKind(Node.Kind);
|
||||||
Consumer.beginDocumentSubStructure(StartOffset, EndOffset - StartOffset,
|
Consumer.beginDocumentSubStructure(StartOffset, EndOffset - StartOffset,
|
||||||
Kind, UIdent(), UIdent(), 0, 0,
|
Kind, UIdent(), UIdent(), 0, 0,
|
||||||
0, 0,
|
0, 0, 0, 0,
|
||||||
StringRef(),
|
StringRef(),
|
||||||
StringRef(), StringRef(),
|
StringRef(), StringRef(),
|
||||||
StringRef(),
|
StringRef(),
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public:
|
|||||||
SourceKit::UIdent SetterAccessLevel,
|
SourceKit::UIdent SetterAccessLevel,
|
||||||
unsigned NameOffset, unsigned NameLength,
|
unsigned NameOffset, unsigned NameLength,
|
||||||
unsigned BodyOffset, unsigned BodyLength,
|
unsigned BodyOffset, unsigned BodyLength,
|
||||||
|
unsigned DocOffset, unsigned DocLength,
|
||||||
llvm::StringRef DisplayName, llvm::StringRef TypeName,
|
llvm::StringRef DisplayName, llvm::StringRef TypeName,
|
||||||
llvm::StringRef RuntimeName,
|
llvm::StringRef RuntimeName,
|
||||||
llvm::StringRef SelectorName,
|
llvm::StringRef SelectorName,
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ struct Node {
|
|||||||
unsigned NameLength;
|
unsigned NameLength;
|
||||||
unsigned BodyOffset;
|
unsigned BodyOffset;
|
||||||
unsigned BodyLength;
|
unsigned BodyLength;
|
||||||
|
unsigned DocOffset;
|
||||||
|
unsigned DocLength;
|
||||||
std::string DisplayName;
|
std::string DisplayName;
|
||||||
std::string TypeName;
|
std::string TypeName;
|
||||||
std::string RuntimeName;
|
std::string RuntimeName;
|
||||||
@@ -72,6 +74,8 @@ struct DocStructureArrayBuilder::Implementation {
|
|||||||
unsigned, // NameLength
|
unsigned, // NameLength
|
||||||
unsigned, // BodyOffset
|
unsigned, // BodyOffset
|
||||||
unsigned, // BodyLength
|
unsigned, // BodyLength
|
||||||
|
unsigned, // DocOffset
|
||||||
|
unsigned, // DocLength
|
||||||
Optional<StringRef>, // DisplayName
|
Optional<StringRef>, // DisplayName
|
||||||
Optional<StringRef>, // TypeName
|
Optional<StringRef>, // TypeName
|
||||||
Optional<StringRef>, // RuntimeName
|
Optional<StringRef>, // RuntimeName
|
||||||
@@ -167,7 +171,8 @@ void DocStructureArrayBuilder::beginSubStructure(
|
|||||||
unsigned Offset, unsigned Length, SourceKit::UIdent Kind,
|
unsigned Offset, unsigned Length, SourceKit::UIdent Kind,
|
||||||
SourceKit::UIdent AccessLevel, SourceKit::UIdent SetterAccessLevel,
|
SourceKit::UIdent AccessLevel, SourceKit::UIdent SetterAccessLevel,
|
||||||
unsigned NameOffset, unsigned NameLength, unsigned BodyOffset,
|
unsigned NameOffset, unsigned NameLength, unsigned BodyOffset,
|
||||||
unsigned BodyLength, StringRef DisplayName, StringRef TypeName,
|
unsigned BodyLength, unsigned DocOffset, unsigned DocLength,
|
||||||
|
StringRef DisplayName, StringRef TypeName,
|
||||||
StringRef RuntimeName, StringRef SelectorName,
|
StringRef RuntimeName, StringRef SelectorName,
|
||||||
ArrayRef<StringRef> InheritedTypes, ArrayRef<UIdent> Attrs) {
|
ArrayRef<StringRef> InheritedTypes, ArrayRef<UIdent> Attrs) {
|
||||||
|
|
||||||
@@ -181,6 +186,8 @@ void DocStructureArrayBuilder::beginSubStructure(
|
|||||||
NameLength,
|
NameLength,
|
||||||
BodyOffset,
|
BodyOffset,
|
||||||
BodyLength,
|
BodyLength,
|
||||||
|
DocOffset,
|
||||||
|
DocLength,
|
||||||
DisplayName,
|
DisplayName,
|
||||||
TypeName,
|
TypeName,
|
||||||
RuntimeName,
|
RuntimeName,
|
||||||
@@ -216,10 +223,10 @@ void DocStructureArrayBuilder::endSubStructure() {
|
|||||||
impl.structureBuilder.addEntry(
|
impl.structureBuilder.addEntry(
|
||||||
node.Offset, node.Length, node.Kind, node.AccessLevel,
|
node.Offset, node.Length, node.Kind, node.AccessLevel,
|
||||||
node.SetterAccessLevel, node.NameOffset, node.NameLength, node.BodyOffset,
|
node.SetterAccessLevel, node.NameOffset, node.NameLength, node.BodyOffset,
|
||||||
node.BodyLength, str(node.DisplayName), str(node.TypeName),
|
node.BodyLength, node.DocOffset, node.DocLength, str(node.DisplayName),
|
||||||
str(node.RuntimeName), str(node.SelectorName), node.InheritedTypesOffset,
|
str(node.TypeName), str(node.RuntimeName), str(node.SelectorName),
|
||||||
node.AttrsOffset, impl.addElements(node.elements),
|
node.InheritedTypesOffset, node.AttrsOffset,
|
||||||
impl.addChildren(node.childIndices));
|
impl.addElements(node.elements), impl.addChildren(node.childIndices));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<llvm::MemoryBuffer> DocStructureArrayBuilder::createBuffer() {
|
std::unique_ptr<llvm::MemoryBuffer> DocStructureArrayBuilder::createBuffer() {
|
||||||
@@ -280,6 +287,8 @@ struct OutNode {
|
|||||||
unsigned NameLength;
|
unsigned NameLength;
|
||||||
unsigned BodyOffset;
|
unsigned BodyOffset;
|
||||||
unsigned BodyLength;
|
unsigned BodyLength;
|
||||||
|
unsigned DocOffset;
|
||||||
|
unsigned DocLength;
|
||||||
const char *DisplayName;
|
const char *DisplayName;
|
||||||
const char *TypeName;
|
const char *TypeName;
|
||||||
const char *RuntimeName;
|
const char *RuntimeName;
|
||||||
@@ -331,6 +340,8 @@ private:
|
|||||||
unsigned, // NameLength
|
unsigned, // NameLength
|
||||||
unsigned, // BodyOffset
|
unsigned, // BodyOffset
|
||||||
unsigned, // BodyLength
|
unsigned, // BodyLength
|
||||||
|
unsigned, // DocOffset
|
||||||
|
unsigned, // DocLength
|
||||||
const char *, // DisplayName
|
const char *, // DisplayName
|
||||||
const char *, // TypeName
|
const char *, // TypeName
|
||||||
const char *, // RuntimeName
|
const char *, // RuntimeName
|
||||||
@@ -353,8 +364,9 @@ OutNode DocStructureArrayReader::readStructure(size_t index) {
|
|||||||
reader.readEntries(
|
reader.readEntries(
|
||||||
index, result.Offset, result.Length, result.Kind, result.AccessLevel,
|
index, result.Offset, result.Length, result.Kind, result.AccessLevel,
|
||||||
result.SetterAccessLevel, result.NameOffset, result.NameLength,
|
result.SetterAccessLevel, result.NameOffset, result.NameLength,
|
||||||
result.BodyOffset, result.BodyLength, result.DisplayName, result.TypeName,
|
result.BodyOffset, result.BodyLength, result.DocOffset, result.DocLength,
|
||||||
result.RuntimeName, result.SelectorName, result.InheritedTypesOffset,
|
result.DisplayName, result.TypeName, result.RuntimeName,
|
||||||
|
result.SelectorName, result.InheritedTypesOffset,
|
||||||
result.AttrsOffset, result.ElementsOffset, result.ChildIndicesOffset);
|
result.AttrsOffset, result.ElementsOffset, result.ChildIndicesOffset);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -461,6 +473,10 @@ struct DocStructureReader {
|
|||||||
APPLY(KeyBodyOffset, Int, node.BodyOffset);
|
APPLY(KeyBodyOffset, Int, node.BodyOffset);
|
||||||
APPLY(KeyBodyLength, Int, node.BodyLength);
|
APPLY(KeyBodyLength, Int, node.BodyLength);
|
||||||
}
|
}
|
||||||
|
if (node.DocOffset || node.DocLength) {
|
||||||
|
APPLY(KeyDocOffset, Int, node.DocOffset);
|
||||||
|
APPLY(KeyDocLength, Int, node.DocLength);
|
||||||
|
}
|
||||||
if (node.DisplayName)
|
if (node.DisplayName)
|
||||||
APPLY(KeyName, String, node.DisplayName);
|
APPLY(KeyName, String, node.DisplayName);
|
||||||
if (node.TypeName)
|
if (node.TypeName)
|
||||||
|
|||||||
@@ -1894,6 +1894,8 @@ public:
|
|||||||
unsigned NameLength,
|
unsigned NameLength,
|
||||||
unsigned BodyOffset,
|
unsigned BodyOffset,
|
||||||
unsigned BodyLength,
|
unsigned BodyLength,
|
||||||
|
unsigned DocOffset,
|
||||||
|
unsigned DocLength,
|
||||||
StringRef DisplayName,
|
StringRef DisplayName,
|
||||||
StringRef TypeName,
|
StringRef TypeName,
|
||||||
StringRef RuntimeName,
|
StringRef RuntimeName,
|
||||||
@@ -2119,6 +2121,8 @@ SKEditorConsumer::beginDocumentSubStructure(unsigned Offset,
|
|||||||
unsigned NameLength,
|
unsigned NameLength,
|
||||||
unsigned BodyOffset,
|
unsigned BodyOffset,
|
||||||
unsigned BodyLength,
|
unsigned BodyLength,
|
||||||
|
unsigned DocOffset,
|
||||||
|
unsigned DocLength,
|
||||||
StringRef DisplayName,
|
StringRef DisplayName,
|
||||||
StringRef TypeName,
|
StringRef TypeName,
|
||||||
StringRef RuntimeName,
|
StringRef RuntimeName,
|
||||||
@@ -2128,8 +2132,8 @@ SKEditorConsumer::beginDocumentSubStructure(unsigned Offset,
|
|||||||
if (EnableStructure) {
|
if (EnableStructure) {
|
||||||
DocStructure.beginSubStructure(
|
DocStructure.beginSubStructure(
|
||||||
Offset, Length, Kind, AccessLevel, SetterAccessLevel, NameOffset,
|
Offset, Length, Kind, AccessLevel, SetterAccessLevel, NameOffset,
|
||||||
NameLength, BodyOffset, BodyLength, DisplayName, TypeName, RuntimeName,
|
NameLength, BodyOffset, BodyLength, DocOffset, DocLength, DisplayName,
|
||||||
SelectorName, InheritedTypes, Attrs);
|
TypeName, RuntimeName, SelectorName, InheritedTypes, Attrs);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ class NullEditorConsumer : public EditorConsumer {
|
|||||||
unsigned NameLength,
|
unsigned NameLength,
|
||||||
unsigned BodyOffset,
|
unsigned BodyOffset,
|
||||||
unsigned BodyLength,
|
unsigned BodyLength,
|
||||||
|
unsigned DocOffset,
|
||||||
|
unsigned DocLength,
|
||||||
StringRef DisplayName,
|
StringRef DisplayName,
|
||||||
StringRef TypeName,
|
StringRef TypeName,
|
||||||
StringRef RuntimeName,
|
StringRef RuntimeName,
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ private:
|
|||||||
unsigned NameLength,
|
unsigned NameLength,
|
||||||
unsigned BodyOffset,
|
unsigned BodyOffset,
|
||||||
unsigned BodyLength,
|
unsigned BodyLength,
|
||||||
|
unsigned DocOffset,
|
||||||
|
unsigned DocLength,
|
||||||
StringRef DisplayName,
|
StringRef DisplayName,
|
||||||
StringRef TypeName,
|
StringRef TypeName,
|
||||||
StringRef RuntimeName,
|
StringRef RuntimeName,
|
||||||
|
|||||||
Reference in New Issue
Block a user