[PATCH] D25613: [clang-move] Don't overuse Replacements::add.
Haojian Wu via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 14 06:26:00 PDT 2016
hokein created this revision.
hokein added a reviewer: ioeric.
hokein added a subscriber: cfe-commits.
https://reviews.llvm.org/D25613
Files:
clang-move/ClangMove.cpp
Index: clang-move/ClangMove.cpp
===================================================================
--- clang-move/ClangMove.cpp
+++ clang-move/ClangMove.cpp
@@ -251,32 +251,24 @@
const std::vector<ClangMoveTool::MovedDecl> &Decls,
llvm::StringRef FileName,
bool IsHeader = false) {
- clang::tooling::Replacements InsertedReplacements;
+ std::string NewCode;
std::string GuardName(FileName);
if (IsHeader) {
std::replace(GuardName.begin(), GuardName.end(), '/', '_');
std::replace(GuardName.begin(), GuardName.end(), '.', '_');
std::replace(GuardName.begin(), GuardName.end(), '-', '_');
GuardName = StringRef(GuardName).upper();
- std::string HeaderGuard = "#ifndef " + GuardName + "\n";
- HeaderGuard += "#define " + GuardName + "\n";
- clang::tooling::Replacement HeaderGuardInclude(FileName, 0, 0,
- HeaderGuard);
- addOrMergeReplacement(HeaderGuardInclude, &InsertedReplacements);
+ NewCode += "#ifndef " + GuardName + "\n";
+ NewCode += "#define " + GuardName + "\n";
}
// Add #Includes.
- std::string AllIncludesString;
- // FIXME: Add header guard.
for (const auto &Include : Includes)
- AllIncludesString += Include;
+ NewCode += Include;
- if (!AllIncludesString.empty()) {
- clang::tooling::Replacement InsertInclude(FileName, 0, 0,
- AllIncludesString + "\n");
- addOrMergeReplacement(InsertInclude, &InsertedReplacements);
- }
+ if (!Includes.empty())
+ NewCode += "\n";
// Add moved class definition and its related declarations. All declarations
// in same namespace are grouped together.
@@ -299,36 +291,23 @@
for (auto It = CurrentNamespaces.rbegin(); RemainingSize > 0;
--RemainingSize, ++It) {
assert(It < CurrentNamespaces.rend());
- auto code = "} // namespace " + *It + "\n";
- clang::tooling::Replacement InsertedReplacement(FileName, 0, 0, code);
- addOrMergeReplacement(InsertedReplacement, &InsertedReplacements);
+ NewCode += "} // namespace " + *It + "\n";
}
while (DeclIt != DeclNamespaces.end()) {
- clang::tooling::Replacement InsertedReplacement(
- FileName, 0, 0, "namespace " + *DeclIt + " {\n");
- addOrMergeReplacement(InsertedReplacement, &InsertedReplacements);
+ NewCode += "namespace " + *DeclIt + " {\n";
++DeclIt;
}
-
- clang::tooling::Replacement InsertedReplacement(
- FileName, 0, 0, getDeclarationSourceText(MovedDecl.Decl, MovedDecl.SM));
- addOrMergeReplacement(InsertedReplacement, &InsertedReplacements);
-
+ NewCode += getDeclarationSourceText(MovedDecl.Decl, MovedDecl.SM);
CurrentNamespaces = std::move(NextNamespaces);
}
std::reverse(CurrentNamespaces.begin(), CurrentNamespaces.end());
- for (const auto &NS : CurrentNamespaces) {
- clang::tooling::Replacement InsertedReplacement(
- FileName, 0, 0, "} // namespace " + NS + "\n");
- addOrMergeReplacement(InsertedReplacement, &InsertedReplacements);
- }
+ for (const auto &NS : CurrentNamespaces)
+ NewCode += "} // namespace " + NS + "\n";
- if (IsHeader) {
- clang::tooling::Replacement HeaderGuardEnd(FileName, 0, 0,
- "#endif // " + GuardName + "\n");
- addOrMergeReplacement(HeaderGuardEnd, &InsertedReplacements);
- }
- return InsertedReplacements;
+ if (IsHeader)
+ NewCode += "#endif // " + GuardName + "\n";
+ return clang::tooling::Replacements(
+ clang::tooling::Replacement(FileName, 0, 0, NewCode));
}
} // namespace
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25613.74672.patch
Type: text/x-patch
Size: 3709 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161014/7b70f941/attachment.bin>
More information about the cfe-commits
mailing list