]> granicus.if.org Git - clang/commitdiff
Fixes calculateRangesAfterReplacements crash when Replacements is empty.
authorEric Liu <ioeric@google.com>
Mon, 8 Aug 2016 13:37:39 +0000 (13:37 +0000)
committerEric Liu <ioeric@google.com>
Mon, 8 Aug 2016 13:37:39 +0000 (13:37 +0000)
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

lib/Tooling/Core/Replacement.cpp
unittests/Tooling/RefactoringTest.cpp

index d498f43352181a23ea906a679dd80ef8ca56f4a3..b257f0f137239644176eb4e5256de6b3ed62830d 100644 (file)
@@ -361,6 +361,8 @@ calculateRangesAfterReplacements(const Replacements &Replaces,
   //   - Merge with \p Replaces.
   //   - The new ranges will be the affected ranges of the merged replacements.
   auto MergedRanges = combineAndSortRanges(Ranges);
+  if (Replaces.empty())
+    return MergedRanges;
   tooling::Replacements FakeReplaces;
   for (const auto &R : MergedRanges) {
     auto Err = FakeReplaces.add(Replacement(Replaces.begin()->getFilePath(),
index 5dd5c02c5778bdc6be1bad7d4ac8fb0ef96f8766..d5877ac2f9b72285e9e735a27720bb74fd4e1eaa 100644 (file)
@@ -506,6 +506,13 @@ TEST(Range, CalculateRangesOfReplacements) {
   EXPECT_TRUE(Ranges[1].getLength() == 22);
 }
 
+TEST(Range, RangesAfterEmptyReplacements) {
+  std::vector<Range> Ranges = {Range(5, 6), Range(10, 5)};
+  Replacements Replaces;
+  std::vector<Range> Expected = {Range(5, 10)};
+  EXPECT_EQ(Expected, calculateRangesAfterReplacements(Replaces, Ranges));
+}
+
 TEST(Range, RangesAfterReplacements) {
   std::vector<Range> Ranges = {Range(5, 2), Range(10, 5)};
   Replacements Replaces = toReplacements({Replacement("foo", 0, 2, "1234")});