aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Driver/AnalysisConsumer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/Driver/AnalysisConsumer.cpp b/Driver/AnalysisConsumer.cpp
index f01a755988..f606c87742 100644
--- a/Driver/AnalysisConsumer.cpp
+++ b/Driver/AnalysisConsumer.cpp
@@ -60,6 +60,7 @@ namespace {
Actions FunctionActions;
Actions ObjCMethodActions;
Actions ObjCImplementationActions;
+ Actions TranslationUnitActions;
public:
const bool VisGraphviz;
@@ -100,6 +101,10 @@ namespace {
ObjCImplementationActions.push_back(action);
}
+ void addTranslationUnitAction(CodeAction action) {
+ TranslationUnitActions.push_back(action);
+ }
+
virtual void Initialize(ASTContext &Context) {
Ctx = &Context;
}
@@ -291,6 +296,13 @@ void AnalysisConsumer::HandleTopLevelDecl(Decl *D) {
void AnalysisConsumer::HandleTranslationUnit(TranslationUnit& TU) {
+ if(!TranslationUnitActions.empty()) {
+ AnalysisManager mgr(*this, &TU);
+ for (Actions::iterator I = TranslationUnitActions.begin(),
+ E = TranslationUnitActions.end(); I != E; ++I)
+ (*I)(mgr);
+ }
+
if (ObjCImplementationActions.empty())
return;