summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
diff options
context:
space:
mode:
authorEdwin Vane <edwin.vane@intel.com>2013-05-31 13:20:24 +0000
committerEdwin Vane <edwin.vane@intel.com>2013-05-31 13:20:24 +0000
commit99f8042e74c0ecbfad3a75cf65b5245839e1fa8d (patch)
tree8d53f2d061ec43000c3ff33a253e26fc84907557 /clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
parent5494e0bec303af3557f96fa3e6dff88428b885a8 (diff)
downloadbcm5719-llvm-99f8042e74c0ecbfad3a75cf65b5245839e1fa8d.tar.gz
bcm5719-llvm-99f8042e74c0ecbfad3a75cf65b5245839e1fa8d.zip
cpp11-migrate: Add option to detect and use macros that expand to 'override'
Added a new option -override-macros which causes the, the add-override transform to detect macros that expand to 'override' (like LLVM_OVERRIDE) and use these macros instead of the override keyword directly. llvm-svn: 183001
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