summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp')
-rw-r--r--clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
index b93aee927d3..008e947410e 100644
--- a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
+++ b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
@@ -21,6 +21,7 @@
#include "clang/AST/Attr.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Lex/Lexer.h"
+#include "clang/Lex/Preprocessor.h"
using namespace clang::ast_matchers;
using namespace clang::tooling;
@@ -85,6 +86,15 @@ void AddOverrideFixer::run(const MatchFinder::MatchResult &Result) {
StartLoc = SM.getSpellingLoc(M->getLocEnd());
StartLoc = Lexer::getLocForEndOfToken(StartLoc, 0, SM, LangOptions());
}
- Replace.insert(tooling::Replacement(SM, StartLoc, 0, " override"));
+
+ std::string ReplacementText = " override";
+ if (DetectMacros) {
+ assert(PP != 0 && "No access to Preprocessor object for macro detection");
+ clang::TokenValue Tokens[] = { PP->getIdentifierInfo("override") };
+ llvm::StringRef MacroName = PP->getLastMacroWithSpelling(StartLoc, Tokens);
+ if (!MacroName.empty())
+ ReplacementText = (" " + MacroName).str();
+ }
+ Replace.insert(tooling::Replacement(SM, StartLoc, 0, ReplacementText));
++AcceptedChanges;
}
OpenPOWER on IntegriCloud