summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CIndex.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-05-21 09:21:35 +0000
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-05-21 09:21:35 +0000
commit2eebf4d939b65650ba14ec062fe4be750fa347e1 (patch)
treed0663bb42ba3931e72a62be2febd0c29d174d296 /clang/tools/libclang/CIndex.cpp
parent8fcf012693aeb25e29430bcbbf6a60f28f440357 (diff)
downloadbcm5719-llvm-2eebf4d939b65650ba14ec062fe4be750fa347e1.tar.gz
bcm5719-llvm-2eebf4d939b65650ba14ec062fe4be750fa347e1.zip
[libclang] visit c++14 lambda capture init expressions
Patch by Milian Wolff. Differential Revision: https://reviews.llvm.org/D60672 llvm-svn: 361234
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
-rw-r--r--clang/tools/libclang/CIndex.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index 715618c3c0f..f065802467a 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -3134,12 +3134,11 @@ bool CursorVisitor::RunVisitorWorkList(VisitorWorkList &WL) {
}
case VisitorJob::LambdaExprPartsKind: {
- // Visit captures.
+ // Visit non-init captures.
const LambdaExpr *E = cast<LambdaExprParts>(&LI)->get();
for (LambdaExpr::capture_iterator C = E->explicit_capture_begin(),
CEnd = E->explicit_capture_end();
C != CEnd; ++C) {
- // FIXME: Lambda init-captures.
if (!C->capturesVariable())
continue;
@@ -3148,6 +3147,11 @@ bool CursorVisitor::RunVisitorWorkList(VisitorWorkList &WL) {
TU)))
return true;
}
+ // Visit init captures
+ for (auto InitExpr : E->capture_inits()) {
+ if (Visit(InitExpr))
+ return true;
+ }
TypeLoc TL = E->getCallOperator()->getTypeSourceInfo()->getTypeLoc();
// Visit parameters and return type, if present.
OpenPOWER on IntegriCloud