File tree Expand file tree Collapse file tree 4 files changed +25
-0
lines changed Expand file tree Collapse file tree 4 files changed +25
-0
lines changed Original file line number Diff line number Diff line change 14
14
#include " clang/AST/DeclCXX.h"
15
15
#include " clang/AST/DeclTemplate.h"
16
16
#include " clang/AST/Expr.h"
17
+ #include " clang/AST/ExprCXX.h"
17
18
#include " clang/AST/RawCommentList.h"
18
19
#include " clang/AST/TypeLoc.h"
19
20
#include " clang/Basic/SourceLocation.h"
@@ -622,6 +623,22 @@ void TuIndexer::saveVarDecl(const clang::VarDecl &varDecl) {
622
623
}
623
624
}
624
625
626
+ void TuIndexer::saveCXXConstructExpr (
627
+ const clang::CXXConstructExpr &cxxConstructExpr) {
628
+ if (auto *cxxConstructorDecl = cxxConstructExpr.getConstructor ()) {
629
+ if (cxxConstructorDecl->isImplicit ()) {
630
+ // SCIP doesn't yet have any way to represent implicitly
631
+ // synthesized code:
632
+ // https://github.com/sourcegraph/scip-clang/issues/126
633
+ return ;
634
+ }
635
+ if (auto optSymbol =
636
+ this ->symbolFormatter .getFunctionSymbol (*cxxConstructorDecl)) {
637
+ this ->saveReference (*optSymbol, cxxConstructExpr.getBeginLoc ());
638
+ }
639
+ }
640
+ }
641
+
625
642
void TuIndexer::saveDeclRefExpr (const clang::DeclRefExpr &declRefExpr) {
626
643
// In the presence of 'using', prefer going to the 'using' instead
627
644
// of directly dereferencing.
Original file line number Diff line number Diff line change 22
22
#include " indexer/SymbolFormatter.h"
23
23
24
24
#define FOR_EACH_EXPR_TO_BE_INDEXED (F ) \
25
+ F (CXXConstruct) \
25
26
F(DeclRef) \
26
27
F(Member)
27
28
Original file line number Diff line number Diff line change 69
69
D d0;
70
70
// ^ reference [..] D#
71
71
// ^^ definition local 6
72
+ // ^^ reference [..] D#D(ced63f7c635d850d).
72
73
C c1{};
73
74
// ^ reference [..] C#
74
75
// ^^ definition local 7
75
76
D d1{};
76
77
// ^ reference [..] D#
77
78
// ^^ definition local 8
79
+ // ^^ reference [..] D#D(ced63f7c635d850d).
78
80
C c2{0 , 1 };
79
81
// ^ reference [..] C#
80
82
// ^^ definition local 9
89
91
D d3{move (d1)};
90
92
// ^ reference [..] D#
91
93
// ^^ definition local 11
94
+ // ^^ reference [..] D#D(ece7426db7e2c886).
92
95
// ^^ reference local 8
93
96
94
97
C c4 = {};
97
100
D d4 = {};
98
101
// ^ reference [..] D#
99
102
// ^^ definition local 13
103
+ // ^ reference [..] D#D(ced63f7c635d850d).
100
104
C c5 = C ();
101
105
// ^ reference [..] C#
102
106
// ^^ definition local 14
105
109
// ^ reference [..] D#
106
110
// ^^ definition local 15
107
111
// ^ reference [..] D#
112
+ // ^ reference [..] D#D(ced63f7c635d850d).
108
113
C c6 = {0 , 1 };
109
114
// ^ reference [..] C#
110
115
// ^^ definition local 16
128
133
D d10 = move (d1);
129
134
// ^ reference [..] D#
130
135
// ^^^ definition local 21
136
+ // ^^^^ reference [..] D#D(ece7426db7e2c886).
131
137
// ^^ reference local 8
132
138
}
Original file line number Diff line number Diff line change 29
29
S1 (): S0() {
30
30
// ^^ definition [..] S1#S1(49f6e7a06ebc5aa8).
31
31
// ^^ reference [..] S0#
32
+ // ^^ reference [..] S0#S0(49f6e7a06ebc5aa8).
32
33
x = y;
33
34
// ^ reference [..] S0#x.
34
35
// ^ reference [..] S0#y.
You can’t perform that action at this time.
0 commit comments