@@ -13,41 +13,78 @@ namespace clang {
13
13
namespace clangd {
14
14
15
15
Position Annotations::point (llvm::StringRef Name) const {
16
- return offsetToPosition (code (), Base::point (Name));
16
+ return pointWithPayload (Name).first ;
17
+ }
18
+
19
+ std::pair<Position, llvm::StringRef>
20
+ Annotations::pointWithPayload (llvm::StringRef Name) const {
21
+ auto [BasePoint, Payload] = Base::pointWithPayload (Name);
22
+ return {offsetToPosition (code (), BasePoint), Payload};
17
23
}
18
24
19
25
std::vector<Position> Annotations::points (llvm::StringRef Name) const {
20
- auto Offsets = Base::points (Name);
26
+ auto BasePoints = Base::points (Name);
21
27
22
28
std::vector<Position> Ps;
23
- Ps.reserve (Offsets.size ());
24
- for (size_t O : Offsets)
25
- Ps.push_back (offsetToPosition (code (), O));
29
+ Ps.reserve (BasePoints.size ());
30
+ for (const auto Point : BasePoints)
31
+ Ps.push_back (offsetToPosition (code (), Point));
32
+
33
+ return Ps;
34
+ }
35
+
36
+ std::vector<std::pair<Position, llvm::StringRef>>
37
+ Annotations::pointsWithPayload (llvm::StringRef Name) const {
38
+ auto BasePoints = Base::pointsWithPayload (Name);
39
+
40
+ std::vector<std::pair<Position, llvm::StringRef>> Ps;
41
+ Ps.reserve (BasePoints.size ());
42
+ for (const auto &[Point, Payload] : BasePoints)
43
+ Ps.push_back ({offsetToPosition (code (), Point), Payload});
26
44
27
45
return Ps;
28
46
}
29
47
30
- static clangd::Range toLSPRange (llvm::StringRef Code, Annotations::Range R) {
48
+ static clangd::Range toLSPRange (llvm::StringRef Code,
49
+ llvm::Annotations::Range R) {
31
50
clangd::Range LSPRange;
32
51
LSPRange.start = offsetToPosition (Code, R.Begin );
33
52
LSPRange.end = offsetToPosition (Code, R.End );
34
53
return LSPRange;
35
54
}
36
55
37
- clangd:: Range Annotations::range (llvm::StringRef Name) const {
38
- return toLSPRange ( code (), Base::range ( Name)) ;
56
+ Range Annotations::range (llvm::StringRef Name) const {
57
+ return rangeWithPayload ( Name). first ;
39
58
}
40
59
41
- std::vector<clangd::Range> Annotations::ranges (llvm::StringRef Name) const {
60
+ std::pair<clangd::Range, llvm::StringRef>
61
+ Annotations::rangeWithPayload (llvm::StringRef Name) const {
62
+ auto [BaseRange, Payload] = Base::rangeWithPayload (Name);
63
+ return {toLSPRange (code (), BaseRange), Payload};
64
+ }
65
+
66
+ std::vector<Range> Annotations::ranges (llvm::StringRef Name) const {
42
67
auto OffsetRanges = Base::ranges (Name);
43
68
44
69
std::vector<clangd::Range> Rs;
45
70
Rs.reserve (OffsetRanges.size ());
46
- for (Annotations::Range R : OffsetRanges)
71
+ for (const auto & R : OffsetRanges)
47
72
Rs.push_back (toLSPRange (code (), R));
48
73
49
74
return Rs;
50
75
}
51
76
77
+ std::vector<std::pair<clangd::Range, llvm::StringRef>>
78
+ Annotations::rangesWithPayload (llvm::StringRef Name) const {
79
+ auto OffsetRanges = Base::rangesWithPayload (Name);
80
+
81
+ std::vector<std::pair<clangd::Range, llvm::StringRef>> Rs;
82
+ Rs.reserve (OffsetRanges.size ());
83
+ for (const auto &[R, Payload] : OffsetRanges)
84
+ Rs.push_back ({toLSPRange (code (), R), Payload});
85
+
86
+ return Rs;
87
+ }
88
+
52
89
} // namespace clangd
53
90
} // namespace clang
0 commit comments