From: Eric Liu Date: Mon, 8 Aug 2016 13:37:39 +0000 (+0000) Subject: Fixes calculateRangesAfterReplacements crash when Replacements is empty. X-Git-Tag: llvmorg-4.0.0-rc1~13065 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=73337f3dfa3114150f2bf68244f90213db38db50;p=platform%2Fupstream%2Fllvm.git Fixes calculateRangesAfterReplacements crash when Replacements is empty. Reviewers: klimek, djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D23264 llvm-svn: 278004 --- diff --git a/clang/lib/Tooling/Core/Replacement.cpp b/clang/lib/Tooling/Core/Replacement.cpp index d498f43..b257f0f 100644 --- a/clang/lib/Tooling/Core/Replacement.cpp +++ b/clang/lib/Tooling/Core/Replacement.cpp @@ -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(), diff --git a/clang/unittests/Tooling/RefactoringTest.cpp b/clang/unittests/Tooling/RefactoringTest.cpp index 5dd5c02..d5877ac 100644 --- a/clang/unittests/Tooling/RefactoringTest.cpp +++ b/clang/unittests/Tooling/RefactoringTest.cpp @@ -506,6 +506,13 @@ TEST(Range, CalculateRangesOfReplacements) { EXPECT_TRUE(Ranges[1].getLength() == 22); } +TEST(Range, RangesAfterEmptyReplacements) { + std::vector Ranges = {Range(5, 6), Range(10, 5)}; + Replacements Replaces; + std::vector Expected = {Range(5, 10)}; + EXPECT_EQ(Expected, calculateRangesAfterReplacements(Replaces, Ranges)); +} + TEST(Range, RangesAfterReplacements) { std::vector Ranges = {Range(5, 2), Range(10, 5)}; Replacements Replaces = toReplacements({Replacement("foo", 0, 2, "1234")});