summaryrefslogtreecommitdiffstats
path: root/clang/lib/Tooling/Refactoring
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-10-06 19:49:29 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-10-06 19:49:29 +0000
commitcdb9a05a817a417a4a9c17f330e849c509a8b594 (patch)
tree11f95070c28a6dbecb939016e11498517c6e83e6 /clang/lib/Tooling/Refactoring
parenta1cf61b6fc8a990173bb00a5b5b9a9853c54f4a3 (diff)
downloadbcm5719-llvm-cdb9a05a817a417a4a9c17f330e849c509a8b594.tar.gz
bcm5719-llvm-cdb9a05a817a417a4a9c17f330e849c509a8b594.zip
Revert r315087
clang-refactor crashes on some bots after this commit llvm-svn: 315095
Diffstat (limited to 'clang/lib/Tooling/Refactoring')
-rw-r--r--clang/lib/Tooling/Refactoring/Rename/RenamingAction.cpp24
1 files changed, 11 insertions, 13 deletions
diff --git a/clang/lib/Tooling/Refactoring/Rename/RenamingAction.cpp b/clang/lib/Tooling/Refactoring/Rename/RenamingAction.cpp
index 547d7bb6bcd..fe3067f8258 100644
--- a/clang/lib/Tooling/Refactoring/Rename/RenamingAction.cpp
+++ b/clang/lib/Tooling/Refactoring/Rename/RenamingAction.cpp
@@ -23,8 +23,6 @@
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Refactoring.h"
#include "clang/Tooling/Refactoring/RefactoringAction.h"
-#include "clang/Tooling/Refactoring/RefactoringOptions.h"
-#include "clang/Tooling/Refactoring/Rename/SymbolName.h"
#include "clang/Tooling/Refactoring/Rename/USRFinder.h"
#include "clang/Tooling/Refactoring/Rename/USRFindingAction.h"
#include "clang/Tooling/Refactoring/Rename/USRLocFinder.h"
@@ -77,8 +75,7 @@ private:
class RenameOccurrences final : public SourceChangeRefactoringRule {
public:
- RenameOccurrences(const NamedDecl *ND, std::string NewName)
- : Finder(ND), NewName(NewName) {}
+ RenameOccurrences(const NamedDecl *ND) : Finder(ND) {}
Expected<AtomicChanges>
createSourceReplacements(RefactoringRuleContext &Context) {
@@ -86,15 +83,15 @@ public:
Finder.findSymbolOccurrences(Context);
if (!Occurrences)
return Occurrences.takeError();
- // FIXME: Verify that the new name is valid.
- SymbolName Name(NewName);
+ // FIXME: This is a temporary workaround that's needed until the refactoring
+ // options are implemented.
+ StringRef NewName = "Bar";
return createRenameReplacements(
- *Occurrences, Context.getASTContext().getSourceManager(), Name);
+ *Occurrences, Context.getASTContext().getSourceManager(), NewName);
}
private:
OccurrenceFinder Finder;
- std::string NewName;
};
class LocalRename final : public RefactoringAction {
@@ -110,7 +107,7 @@ public:
RefactoringActionRules createActionRules() const override {
RefactoringActionRules Rules;
Rules.push_back(createRefactoringActionRule<RenameOccurrences>(
- SymbolSelectionRequirement(), OptionRequirement<NewNameOption>()));
+ SymbolSelectionRequirement()));
return Rules;
}
};
@@ -123,18 +120,19 @@ std::unique_ptr<RefactoringAction> createLocalRenameAction() {
Expected<std::vector<AtomicChange>>
createRenameReplacements(const SymbolOccurrences &Occurrences,
- const SourceManager &SM, const SymbolName &NewName) {
+ const SourceManager &SM,
+ ArrayRef<StringRef> NewNameStrings) {
// FIXME: A true local rename can use just one AtomicChange.
std::vector<AtomicChange> Changes;
for (const auto &Occurrence : Occurrences) {
ArrayRef<SourceRange> Ranges = Occurrence.getNameRanges();
- assert(NewName.getNamePieces().size() == Ranges.size() &&
+ assert(NewNameStrings.size() == Ranges.size() &&
"Mismatching number of ranges and name pieces");
AtomicChange Change(SM, Ranges[0].getBegin());
for (const auto &Range : llvm::enumerate(Ranges)) {
auto Error =
Change.replace(SM, CharSourceRange::getCharRange(Range.value()),
- NewName.getNamePieces()[Range.index()]);
+ NewNameStrings[Range.index()]);
if (Error)
return std::move(Error);
}
@@ -198,7 +196,7 @@ public:
}
// FIXME: Support multi-piece names.
// FIXME: better error handling (propagate error out).
- SymbolName NewNameRef(NewName);
+ StringRef NewNameRef = NewName;
Expected<std::vector<AtomicChange>> Change =
createRenameReplacements(Occurrences, SourceMgr, NewNameRef);
if (!Change) {
OpenPOWER on IntegriCloud