diff options
author | Edwin Vane <edwin.vane@intel.com> | 2013-05-31 13:20:24 +0000 |
---|---|---|
committer | Edwin Vane <edwin.vane@intel.com> | 2013-05-31 13:20:24 +0000 |
commit | 99f8042e74c0ecbfad3a75cf65b5245839e1fa8d (patch) | |
tree | 8d53f2d061ec43000c3ff33a253e26fc84907557 /clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp | |
parent | 5494e0bec303af3557f96fa3e6dff88428b885a8 (diff) | |
download | bcm5719-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.cpp | 12 |
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; } |