summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2014-09-09 13:53:51 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2014-09-09 13:53:51 +0000
commitab7cefc36b923ac8f49aee768cfee4e264d20c42 (patch)
treefc2f4ace19c8478c525ca53b4a7768d9219a1867 /clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
parentefffbee024a8789a0528486d431e27f170b489a7 (diff)
downloadbcm5719-llvm-ab7cefc36b923ac8f49aee768cfee4e264d20c42.tar.gz
bcm5719-llvm-ab7cefc36b923ac8f49aee768cfee4e264d20c42.zip
clang-apply-replacements: Deduplicate paths with FileManager.
Bucket replacements by FileEntry instead of path. The same file with different paths is very common, relative #include paths and symlinks can easily create them. When that occurs we would apply the fix twice. llvm-svn: 217440
Diffstat (limited to 'clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp')
-rw-r--r--clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp27
1 files changed, 13 insertions, 14 deletions
diff --git a/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp b/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
index 4559a26a12b..94ad4638881 100644
--- a/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
+++ b/clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
@@ -246,35 +246,34 @@ int main(int argc, char **argv) {
Rewriter ReplacementsRewriter(SM, LangOptions());
- for (FileToReplacementsMap::const_iterator I = GroupedReplacements.begin(),
- E = GroupedReplacements.end();
- I != E; ++I) {
-
- std::string NewFileData;
-
+ for (const auto &FileAndReplacements : GroupedReplacements) {
// This shouldn't happen but if a file somehow has no replacements skip to
// next file.
- if (I->getValue().empty())
+ if (FileAndReplacements.second.empty())
continue;
- if (!applyReplacements(I->getValue(), NewFileData, Diagnostics)) {
- errs() << "Failed to apply replacements to " << I->getKey() << "\n";
+ std::string NewFileData;
+ const char *FileName = FileAndReplacements.first->getName();
+ if (!applyReplacements(FileAndReplacements.second, NewFileData,
+ Diagnostics)) {
+ errs() << "Failed to apply replacements to " << FileName << "\n";
continue;
}
// Apply formatting if requested.
- if (DoFormat && !applyFormatting(I->getValue(), NewFileData, NewFileData,
- FormatStyle, Diagnostics)) {
- errs() << "Failed to apply reformatting replacements for " << I->getKey()
+ if (DoFormat &&
+ !applyFormatting(FileAndReplacements.second, NewFileData, NewFileData,
+ FormatStyle, Diagnostics)) {
+ errs() << "Failed to apply reformatting replacements for " << FileName
<< "\n";
continue;
}
// Write new file to disk
std::error_code EC;
- llvm::raw_fd_ostream FileStream(I->getKey(), EC, llvm::sys::fs::F_Text);
+ llvm::raw_fd_ostream FileStream(FileName, EC, llvm::sys::fs::F_Text);
if (EC) {
- llvm::errs() << "Could not open " << I->getKey() << " for writing\n";
+ llvm::errs() << "Could not open " << FileName << " for writing\n";
continue;
}
OpenPOWER on IntegriCloud