Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit b4c0db2

Browse files
author
Eric Liu
committed
Fixes calculateRangesAfterReplacements crash when Replacements is empty.
Reviewers: klimek, djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D23264 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@278004 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 9d7b595 commit b4c0db2

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

Diff for: lib/Tooling/Core/Replacement.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,8 @@ calculateRangesAfterReplacements(const Replacements &Replaces,
361361
// - Merge with \p Replaces.
362362
// - The new ranges will be the affected ranges of the merged replacements.
363363
auto MergedRanges = combineAndSortRanges(Ranges);
364+
if (Replaces.empty())
365+
return MergedRanges;
364366
tooling::Replacements FakeReplaces;
365367
for (const auto &R : MergedRanges) {
366368
auto Err = FakeReplaces.add(Replacement(Replaces.begin()->getFilePath(),

Diff for: unittests/Tooling/RefactoringTest.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,13 @@ TEST(Range, CalculateRangesOfReplacements) {
506506
EXPECT_TRUE(Ranges[1].getLength() == 22);
507507
}
508508

509+
TEST(Range, RangesAfterEmptyReplacements) {
510+
std::vector<Range> Ranges = {Range(5, 6), Range(10, 5)};
511+
Replacements Replaces;
512+
std::vector<Range> Expected = {Range(5, 10)};
513+
EXPECT_EQ(Expected, calculateRangesAfterReplacements(Replaces, Ranges));
514+
}
515+
509516
TEST(Range, RangesAfterReplacements) {
510517
std::vector<Range> Ranges = {Range(5, 2), Range(10, 5)};
511518
Replacements Replaces = toReplacements({Replacement("foo", 0, 2, "1234")});

0 commit comments

Comments
 (0)