Author: ioeric Date: Mon Aug 8 08:37:39 2016 New Revision: 278004 URL: http://llvm.org/viewvc/llvm-project?rev=278004&view=rev Log: Fixes calculateRangesAfterReplacements crash when Replacements is empty.
Reviewers: klimek, djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D23264 Modified: cfe/trunk/lib/Tooling/Core/Replacement.cpp cfe/trunk/unittests/Tooling/RefactoringTest.cpp Modified: cfe/trunk/lib/Tooling/Core/Replacement.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Core/Replacement.cpp?rev=278004&r1=278003&r2=278004&view=diff ============================================================================== --- cfe/trunk/lib/Tooling/Core/Replacement.cpp (original) +++ cfe/trunk/lib/Tooling/Core/Replacement.cpp Mon Aug 8 08:37:39 2016 @@ -361,6 +361,8 @@ calculateRangesAfterReplacements(const R // - 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(), Modified: cfe/trunk/unittests/Tooling/RefactoringTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/RefactoringTest.cpp?rev=278004&r1=278003&r2=278004&view=diff ============================================================================== --- cfe/trunk/unittests/Tooling/RefactoringTest.cpp (original) +++ cfe/trunk/unittests/Tooling/RefactoringTest.cpp Mon Aug 8 08:37:39 2016 @@ -506,6 +506,13 @@ TEST(Range, CalculateRangesOfReplacement 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")}); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits