[PATCH] D85426: [clangd] Implement FileFilter for the indexer
Kirill Bobyrev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 6 05:08:30 PDT 2020
kbobyrev created this revision.
kbobyrev added a reviewer: sammccall.
Herald added subscribers: cfe-commits, usaxena95, kadircet, arphaman, jkorous.
Herald added a project: clang.
kbobyrev requested review of this revision.
Herald added subscribers: MaskRay, ilya-biryukov.
Tests failing so far: BackgroundIndexTests.IndexTwoFiles,
BackgroundIndexTests.ShardStorageLoad.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D85426
Files:
clang-tools-extra/clangd/index/SymbolCollector.cpp
Index: clang-tools-extra/clangd/index/SymbolCollector.cpp
===================================================================
--- clang-tools-extra/clangd/index/SymbolCollector.cpp
+++ clang-tools-extra/clangd/index/SymbolCollector.cpp
@@ -340,8 +340,9 @@
// TU, because in practice they are definitions.
BasicSymbol = addDeclaration(*OriginalDecl, std::move(*ID), IsMainFileOnly);
- if (Roles & static_cast<unsigned>(index::SymbolRole::Definition))
- addDefinition(*OriginalDecl, *BasicSymbol);
+ if (BasicSymbol != nullptr)
+ if (Roles & static_cast<unsigned>(index::SymbolRole::Definition))
+ addDefinition(*OriginalDecl, *BasicSymbol);
return true;
}
@@ -434,8 +435,8 @@
S.SymInfo = index::getSymbolInfoForMacro(*MI);
S.Origin = Opts.Origin;
std::string FileURI;
- // FIXME: use the result to filter out symbols.
- shouldIndexFile(SM.getFileID(Loc));
+ if (!shouldIndexFile(SM.getFileID(Loc)))
+ return false;
if (auto DeclLoc =
getTokenLocation(DefLoc, SM, Opts, PP->getLangOpts(), FileURI))
S.CanonicalDeclaration = *DeclLoc;
@@ -561,8 +562,8 @@
const std::pair<SourceLocation, index::SymbolRoleSet> &LocAndRole,
bool Spelled = false) {
auto FileID = SM.getFileID(LocAndRole.first);
- // FIXME: use the result to filter out references.
- shouldIndexFile(FileID);
+ if (!shouldIndexFile(FileID))
+ return;
if (auto FileURI = GetURI(FileID)) {
auto Range =
getTokenRange(LocAndRole.first, SM, ASTCtx->getLangOpts());
@@ -639,8 +640,8 @@
std::string FileURI;
auto Loc = nameLocation(ND, SM);
assert(Loc.isValid() && "Invalid source location for NamedDecl");
- // FIXME: use the result to filter out symbols.
- shouldIndexFile(SM.getFileID(Loc));
+ if (!shouldIndexFile(SM.getFileID(Loc)))
+ return nullptr;
if (auto DeclLoc =
getTokenLocation(Loc, SM, Opts, ASTCtx->getLangOpts(), FileURI))
S.CanonicalDeclaration = *DeclLoc;
@@ -699,8 +700,8 @@
std::string FileURI;
const auto &SM = ND.getASTContext().getSourceManager();
auto Loc = nameLocation(ND, SM);
- // FIXME: use the result to filter out symbols.
- shouldIndexFile(SM.getFileID(Loc));
+ if (!shouldIndexFile(SM.getFileID(Loc)))
+ return;
if (auto DefLoc =
getTokenLocation(Loc, SM, Opts, ASTCtx->getLangOpts(), FileURI))
S.Definition = *DefLoc;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85426.283572.patch
Type: text/x-patch
Size: 2436 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200806/af6dca75/attachment-0001.bin>
More information about the cfe-commits
mailing list