From 017cc6c190e2d22f23fba4c178934f6e4e03db0c Mon Sep 17 00:00:00 2001 From: Kadir Cetinkaya Date: Fri, 8 Mar 2019 09:54:37 +0000 Subject: [clangd] Make sure constructors do not reference class Reviewers: gribozavr Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D58815 llvm-svn: 355679 --- clang-tools-extra/clangd/XRefs.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'clang-tools-extra/clangd/XRefs.cpp') diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp index be4df73b9cf..a099fb9092f 100644 --- a/clang-tools-extra/clangd/XRefs.cpp +++ b/clang-tools-extra/clangd/XRefs.cpp @@ -15,6 +15,7 @@ #include "clang/AST/DeclTemplate.h" #include "clang/AST/RecursiveASTVisitor.h" #include "clang/Index/IndexDataConsumer.h" +#include "clang/Index/IndexSymbol.h" #include "clang/Index/IndexingAction.h" #include "clang/Index/USRGeneration.h" #include "llvm/Support/Path.h" @@ -154,6 +155,10 @@ public: llvm::ArrayRef Relations, SourceLocation Loc, index::IndexDataConsumer::ASTNodeInfo ASTNode) override { + // Skip non-semantic references. + if (Roles & static_cast(index::SymbolRole::NameReference)) + return true; + if (Loc == SearchedLocation) { auto IsImplicitExpr = [](const Expr *E) { if (!E) -- cgit v1.2.3