summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/refactor/Rename.cpp10
-rw-r--r--clang-tools-extra/clangd/refactor/Rename.h3
-rw-r--r--clang-tools-extra/clangd/unittests/RenameTests.cpp8
3 files changed, 13 insertions, 8 deletions
diff --git a/clang-tools-extra/clangd/refactor/Rename.cpp b/clang-tools-extra/clangd/refactor/Rename.cpp
index e57bf61dc2e..6a3439cc061 100644
--- a/clang-tools-extra/clangd/refactor/Rename.cpp
+++ b/clang-tools-extra/clangd/refactor/Rename.cpp
@@ -349,8 +349,9 @@ llvm::Expected<FileEdits> renameOutsideFile(
elog("Fail to read file content: {0}", AffectedFileCode.takeError());
continue;
}
- auto RenameEdit = buildRenameEdit(
- *AffectedFileCode, std::move(FileAndOccurrences.second), NewName);
+ auto RenameEdit =
+ buildRenameEdit(FilePath, *AffectedFileCode,
+ std::move(FileAndOccurrences.second), NewName);
if (!RenameEdit) {
return llvm::make_error<llvm::StringError>(
llvm::formatv("fail to build rename edit for file {0}: {1}", FilePath,
@@ -451,7 +452,8 @@ llvm::Expected<FileEdits> rename(const RenameInputs &RInputs) {
return Results;
}
-llvm::Expected<Edit> buildRenameEdit(llvm::StringRef InitialCode,
+llvm::Expected<Edit> buildRenameEdit(llvm::StringRef AbsFilePath,
+ llvm::StringRef InitialCode,
std::vector<Range> Occurrences,
llvm::StringRef NewName) {
llvm::sort(Occurrences);
@@ -491,7 +493,7 @@ llvm::Expected<Edit> buildRenameEdit(llvm::StringRef InitialCode,
for (const auto &R : OccurrencesOffsets) {
auto ByteLength = R.second - R.first;
if (auto Err = RenameEdit.add(
- tooling::Replacement(InitialCode, R.first, ByteLength, NewName)))
+ tooling::Replacement(AbsFilePath, R.first, ByteLength, NewName)))
return std::move(Err);
}
return Edit(InitialCode, std::move(RenameEdit));
diff --git a/clang-tools-extra/clangd/refactor/Rename.h b/clang-tools-extra/clangd/refactor/Rename.h
index c8cfc6d0589..6f38c14a3e2 100644
--- a/clang-tools-extra/clangd/refactor/Rename.h
+++ b/clang-tools-extra/clangd/refactor/Rename.h
@@ -50,7 +50,8 @@ llvm::Expected<FileEdits> rename(const RenameInputs &RInputs);
/// Generates rename edits that replaces all given occurrences with the
/// NewName.
/// Exposed for testing only.
-llvm::Expected<Edit> buildRenameEdit(llvm::StringRef InitialCode,
+llvm::Expected<Edit> buildRenameEdit(llvm::StringRef AbsFilePath,
+ llvm::StringRef InitialCode,
std::vector<Range> Occurrences,
llvm::StringRef NewName);
diff --git a/clang-tools-extra/clangd/unittests/RenameTests.cpp b/clang-tools-extra/clangd/unittests/RenameTests.cpp
index 89efb32a2bb..0615272de37 100644
--- a/clang-tools-extra/clangd/unittests/RenameTests.cpp
+++ b/clang-tools-extra/clangd/unittests/RenameTests.cpp
@@ -669,14 +669,16 @@ TEST(CrossFileRenameTests, CrossFileOnLocalSymbol) {
TEST(CrossFileRenameTests, BuildRenameEdits) {
Annotations Code("[[😂]]");
auto LSPRange = Code.range();
- auto Edit = buildRenameEdit(Code.code(), {LSPRange}, "abc");
+ llvm::StringRef FilePath = "/test/TestTU.cpp";
+ auto Edit = buildRenameEdit(FilePath, Code.code(), {LSPRange}, "abc");
ASSERT_TRUE(bool(Edit)) << Edit.takeError();
ASSERT_EQ(1UL, Edit->Replacements.size());
+ EXPECT_EQ(FilePath, Edit->Replacements.begin()->getFilePath());
EXPECT_EQ(4UL, Edit->Replacements.begin()->getLength());
// Test invalid range.
LSPRange.end = {10, 0}; // out of range
- Edit = buildRenameEdit(Code.code(), {LSPRange}, "abc");
+ Edit = buildRenameEdit(FilePath, Code.code(), {LSPRange}, "abc");
EXPECT_FALSE(Edit);
EXPECT_THAT(llvm::toString(Edit.takeError()),
testing::HasSubstr("fail to convert"));
@@ -687,7 +689,7 @@ TEST(CrossFileRenameTests, BuildRenameEdits) {
[[range]]
[[range]]
)cpp");
- Edit = buildRenameEdit(T.code(), T.ranges(), "abc");
+ Edit = buildRenameEdit(FilePath, T.code(), T.ranges(), "abc");
ASSERT_TRUE(bool(Edit)) << Edit.takeError();
EXPECT_EQ(applyEdits(FileEdits{{T.code(), std::move(*Edit)}}).front().second,
expectedResult(Code, expectedResult(T, "abc")));
OpenPOWER on IntegriCloud