summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/AddOverride
diff options
context:
space:
mode:
authorEdwin Vane <edwin.vane@intel.com>2013-08-30 19:28:59 +0000
committerEdwin Vane <edwin.vane@intel.com>2013-08-30 19:28:59 +0000
commit0acd502afe118a82f480d184271fe60e5551746f (patch)
tree100dd06543c384a68e3ced4031e07340d4928cfa /clang-tools-extra/cpp11-migrate/AddOverride
parente600025528eaa1c43e5084bab219f8f467b4731e (diff)
downloadbcm5719-llvm-0acd502afe118a82f480d184271fe60e5551746f.tar.gz
bcm5719-llvm-0acd502afe118a82f480d184271fe60e5551746f.zip
cpp11-migrate: Refactor for driver model of operation
Massive simplification of how replacements and file overrides are handled by the migrator: * Sources and headers are all treated the same. * All replacements for a given translation unit are stored in the same TranslationUnitReplacements structure. * Change tracking is updated only from main file; no need for propagating "is tracking" flag around. * Transform base class no longer responsible for applying replacements. They are simply stored and main() looks after deduplication and application. * Renamed -yaml-only to -serialize-replacements. Same restrictions apply: Can only request one transform. New restriction: formatting cannot also be turned on since it's basically a transform. * If -serialize-replacements is requested, changes to files will not be applied on disk. * Changed behaviour of function generating names for serialized replacements: Only the main source file goes into the name of the file since a file may contain changes for multiple different files. * Updated HeaderReplacements LIT test for new serialization behaviour. * Replaced old test that ensures replacements are not serialized if -serialize-replacements is not provided. New version ensures changes are made directly to all files in the translation unit. * Updated unit tests. * Due to major simplification of structures in FileOverrides.h, the FileOverridesTest is quite a bit simpler now. Differential Revision: http://llvm-reviews.chandlerc.com/D1545 llvm-svn: 189689
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/AddOverride')
-rw-r--r--clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.cpp4
-rw-r--r--clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.h2
-rw-r--r--clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp3
-rw-r--r--clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.h12
4 files changed, 10 insertions, 11 deletions
diff --git a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.cpp b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.cpp
index db38fa64b56..9a13c044e5d 100644
--- a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.cpp
+++ b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.cpp
@@ -29,13 +29,13 @@ static cl::opt<bool> DetectMacros(
cl::desc("Detect and use macros that expand to the 'override' keyword."),
cl::cat(TransformsOptionsCategory));
-int AddOverrideTransform::apply(FileOverrides &InputStates,
+int AddOverrideTransform::apply(const FileOverrides &InputStates,
const CompilationDatabase &Database,
const std::vector<std::string> &SourcePaths) {
ClangTool AddOverrideTool(Database, SourcePaths);
unsigned AcceptedChanges = 0;
MatchFinder Finder;
- AddOverrideFixer Fixer(getReplacements(), AcceptedChanges, DetectMacros,
+ AddOverrideFixer Fixer(AcceptedChanges, DetectMacros,
/*Owner=*/ *this);
Finder.addMatcher(makeCandidateForOverrideAttrMatcher(), &Fixer);
diff --git a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.h b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.h
index 81ceaed859c..8c39775e48d 100644
--- a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.h
+++ b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverride.h
@@ -31,7 +31,7 @@ public:
: Transform("AddOverride", Options) {}
/// \see Transform::run().
- virtual int apply(FileOverrides &InputStates,
+ virtual int apply(const FileOverrides &InputStates,
const clang::tooling::CompilationDatabase &Database,
const std::vector<std::string> &SourcePaths) LLVM_OVERRIDE;
diff --git a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
index 47c070e55ae..134318ed386 100644
--- a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
+++ b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.cpp
@@ -95,6 +95,7 @@ void AddOverrideFixer::run(const MatchFinder::MatchResult &Result) {
if (!MacroName.empty())
ReplacementText = (" " + MacroName).str();
}
- Replace.insert(tooling::Replacement(SM, StartLoc, 0, ReplacementText));
+ Owner.addReplacementForCurrentTU(
+ tooling::Replacement(SM, StartLoc, 0, ReplacementText));
++AcceptedChanges;
}
diff --git a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.h b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.h
index 54877d538a4..afcebeffd4b 100644
--- a/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.h
+++ b/clang-tools-extra/cpp11-migrate/AddOverride/AddOverrideActions.h
@@ -25,11 +25,10 @@ class Transform;
///
class AddOverrideFixer : public clang::ast_matchers::MatchFinder::MatchCallback {
public:
- AddOverrideFixer(clang::tooling::Replacements &Replace,
- unsigned &AcceptedChanges, bool DetectMacros,
- const Transform &Owner)
- : Replace(Replace), AcceptedChanges(AcceptedChanges),
- DetectMacros(DetectMacros), Owner(Owner) {}
+ AddOverrideFixer(unsigned &AcceptedChanges, bool DetectMacros,
+ Transform &Owner)
+ : AcceptedChanges(AcceptedChanges), DetectMacros(DetectMacros),
+ Owner(Owner) {}
/// \brief Entry point to the callback called when matches are made.
virtual void run(const clang::ast_matchers::MatchFinder::MatchResult &Result);
@@ -38,10 +37,9 @@ public:
private:
clang::Preprocessor *PP;
- clang::tooling::Replacements &Replace;
unsigned &AcceptedChanges;
bool DetectMacros;
- const Transform &Owner;
+ Transform &Owner;
};
#endif // CPP11_MIGRATE_ADD_OVERRIDE_ACTIONS_H
OpenPOWER on IntegriCloud