diff options
-rw-r--r-- | Driver/AnalysisConsumer.cpp | 12 |
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; |