aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Tooling/Transformer/Transformer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Tooling/Transformer/Transformer.cpp')
-rw-r--r--clang/lib/Tooling/Transformer/Transformer.cpp42
1 files changed, 14 insertions, 28 deletions
diff --git a/clang/lib/Tooling/Transformer/Transformer.cpp b/clang/lib/Tooling/Transformer/Transformer.cpp
index e8fc00c4e953..7a4d8b45f189 100644
--- a/clang/lib/Tooling/Transformer/Transformer.cpp
+++ b/clang/lib/Tooling/Transformer/Transformer.cpp
@@ -38,13 +38,8 @@ void Transformer::run(const MatchFinder::MatchResult &Result) {
return;
}
- if (Transformations->empty()) {
- // No rewrite applied (but no error encountered either).
- transformer::detail::getRuleMatchLoc(Result).print(
- llvm::errs() << "note: skipping match at loc ", *Result.SourceManager);
- llvm::errs() << "\n";
+ if (Transformations->empty())
return;
- }
// Group the transformations, by file, into AtomicChanges, each anchored by
// the location of the first change in that file.
@@ -56,29 +51,20 @@ void Transformer::run(const MatchFinder::MatchResult &Result) {
T.Range.getBegin(), T.Metadata))
.first;
auto &AC = Iter->second;
- if (auto Err = AC.replace(*Result.SourceManager, T.Range, T.Replacement)) {
- Consumer(std::move(Err));
- return;
- }
- }
-
- for (auto &IDChangePair : ChangesByFileID) {
- auto &AC = IDChangePair.second;
- // FIXME: this will add includes to *all* changed files, which may not be
- // the intent. We should upgrade the representation to allow associating
- // headers with specific edits.
- for (const auto &I : Case.AddedIncludes) {
- auto &Header = I.first;
- switch (I.second) {
- case transformer::IncludeFormat::Quoted:
- AC.addHeader(Header);
- break;
- case transformer::IncludeFormat::Angled:
- AC.addHeader((llvm::Twine("<") + Header + ">").str());
- break;
+ switch (T.Kind) {
+ case transformer::EditKind::Range:
+ if (auto Err =
+ AC.replace(*Result.SourceManager, T.Range, T.Replacement)) {
+ Consumer(std::move(Err));
+ return;
}
+ break;
+ case transformer::EditKind::AddInclude:
+ AC.addHeader(T.Replacement);
+ break;
}
-
- Consumer(std::move(AC));
}
+
+ for (auto &IDChangePair : ChangesByFileID)
+ Consumer(std::move(IDChangePair.second));
}