Skip to content

Commit 00f5f29

Browse files
committedJul 14, 2017
[index] Added a method indexTopLevelDecls to run indexing on a list of Decls.
Summary: We need it in clangd for refactoring that replaces ASTUnit with manual AST management. Reviewers: akyrtzi, benlangmuir, arphaman, klimek Reviewed By: arphaman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D35405 llvm-svn: 308016
1 parent 8b4fcb7 commit 00f5f29

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed
 

‎clang/include/clang/Index/IndexingAction.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@
1111
#define LLVM_CLANG_INDEX_INDEXINGACTION_H
1212

1313
#include "clang/Basic/LLVM.h"
14+
#include "llvm/ADT/ArrayRef.h"
1415
#include <memory>
1516

1617
namespace clang {
18+
class ASTContext;
1719
class ASTReader;
1820
class ASTUnit;
21+
class Decl;
1922
class FrontendAction;
2023

2124
namespace serialization {
@@ -47,8 +50,11 @@ void indexASTUnit(ASTUnit &Unit,
4750
std::shared_ptr<IndexDataConsumer> DataConsumer,
4851
IndexingOptions Opts);
4952

50-
void indexModuleFile(serialization::ModuleFile &Mod,
51-
ASTReader &Reader,
53+
void indexTopLevelDecls(ASTContext &Ctx, ArrayRef<const Decl *> Decls,
54+
std::shared_ptr<IndexDataConsumer> DataConsumer,
55+
IndexingOptions Opts);
56+
57+
void indexModuleFile(serialization::ModuleFile &Mod, ASTReader &Reader,
5258
std::shared_ptr<IndexDataConsumer> DataConsumer,
5359
IndexingOptions Opts);
5460

‎clang/lib/Index/IndexingAction.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,18 @@ void index::indexASTUnit(ASTUnit &Unit,
177177
DataConsumer->finish();
178178
}
179179

180+
void index::indexTopLevelDecls(ASTContext &Ctx, ArrayRef<const Decl *> Decls,
181+
std::shared_ptr<IndexDataConsumer> DataConsumer,
182+
IndexingOptions Opts) {
183+
IndexingContext IndexCtx(Opts, *DataConsumer);
184+
IndexCtx.setASTContext(Ctx);
185+
186+
DataConsumer->initialize(Ctx);
187+
for (const Decl *D : Decls)
188+
IndexCtx.indexTopLevelDecl(D);
189+
DataConsumer->finish();
190+
}
191+
180192
void index::indexModuleFile(serialization::ModuleFile &Mod,
181193
ASTReader &Reader,
182194
std::shared_ptr<IndexDataConsumer> DataConsumer,

0 commit comments

Comments
 (0)
Please sign in to comment.