[PATCH] D70312: [clangd] Fix SelectionTree behavior on constructor init-lists.
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 15 08:36:24 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rGad9fd320091d: [clangd] Fix SelectionTree behavior on constructor init-lists. (authored by sammccall).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D70312/new/
https://reviews.llvm.org/D70312
Files:
clang-tools-extra/clangd/Selection.cpp
clang-tools-extra/clangd/unittests/SelectionTests.cpp
Index: clang-tools-extra/clangd/unittests/SelectionTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/SelectionTests.cpp
+++ clang-tools-extra/clangd/unittests/SelectionTests.cpp
@@ -246,6 +246,17 @@
// Tricky case: two VarDecls share a specifier.
{"[[int ^a]], b;", "VarDecl"},
{"[[int a, ^b]];", "VarDecl"},
+ // Tricky case: CXXConstructExpr wants to claim the whole init range.
+ {
+ R"cpp(
+ class X { X(int); };
+ class Y {
+ X x;
+ Y() : [[^x(4)]] {}
+ };
+ )cpp",
+ "CXXCtorInitializer", // Not the CXXConstructExpr!
+ },
// Tricky case: anonymous struct is a sibling of the VarDecl.
{"[[st^ruct {int x;}]] y;", "CXXRecordDecl"},
{"[[struct {int x;} ^y]];", "VarDecl"},
Index: clang-tools-extra/clangd/Selection.cpp
===================================================================
--- clang-tools-extra/clangd/Selection.cpp
+++ clang-tools-extra/clangd/Selection.cpp
@@ -10,6 +10,7 @@
#include "Logger.h"
#include "SourceCode.h"
#include "clang/AST/ASTTypeTraits.h"
+#include "clang/AST/DeclCXX.h"
#include "clang/AST/Expr.h"
#include "clang/AST/PrettyPrinter.h"
#include "clang/AST/RecursiveASTVisitor.h"
@@ -397,6 +398,9 @@
// int (*[[s]])();
else if (auto *VD = llvm::dyn_cast<VarDecl>(D))
return VD->getLocation();
+ } else if (const auto* CCI = N.get<CXXCtorInitializer>()) {
+ // : [[b_]](42)
+ return CCI->getMemberLocation();
}
return SourceRange();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70312.229562.patch
Type: text/x-patch
Size: 1635 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191115/4fa2348c/attachment-0001.bin>
More information about the cfe-commits
mailing list