return E;
}
+llvm::Error AtomicChange::replace(const SourceManager &SM, SourceLocation Loc,
+ unsigned Length, llvm::StringRef Text) {
+ return Replaces.add(Replacement(SM, Loc, Length, Text));
+}
+
llvm::Error AtomicChange::insert(const SourceManager &SM, SourceLocation Loc,
llvm::StringRef Text, bool InsertAfter) {
if (Text.empty())
EXPECT_EQ(ExpectedChange.getKey(), ActualChange.getKey());
EXPECT_EQ(ExpectedChange.getFilePath(), ActualChange.getFilePath());
EXPECT_EQ(ExpectedChange.getError(), ActualChange.getError());
- EXPECT_EQ(ExpectedChange.getInsertedHeaders(), ActualChange.getInsertedHeaders());
- EXPECT_EQ(ExpectedChange.getRemovedHeaders(), ActualChange.getRemovedHeaders());
+ EXPECT_EQ(ExpectedChange.getInsertedHeaders(),
+ ActualChange.getInsertedHeaders());
+ EXPECT_EQ(ExpectedChange.getRemovedHeaders(),
+ ActualChange.getRemovedHeaders());
EXPECT_EQ(ExpectedChange.getReplacements().size(),
ActualChange.getReplacements().size());
EXPECT_EQ(2u, ActualChange.getReplacements().size());
EXPECT_EQ("input.cpp", Change.getFilePath());
}
+TEST_F(AtomicChangeTest, Replace) {
+ setUp();
+ AtomicChange Change(Context.Sources, DefaultLoc);
+ llvm::Error Err = Change.replace(Context.Sources, DefaultLoc, 2, "aa");
+ ASSERT_TRUE(!Err);
+ EXPECT_EQ(Change.getReplacements().size(), 1u);
+ EXPECT_EQ(*Change.getReplacements().begin(),
+ Replacement(Context.Sources, DefaultLoc, 2, "aa"));
+
+ // Add a new replacement that conflicts with the existing one.
+ Err = Change.replace(Context.Sources, DefaultLoc, 3, "ab");
+ EXPECT_TRUE((bool)Err);
+ llvm::consumeError(std::move(Err));
+ EXPECT_EQ(Change.getReplacements().size(), 1u);
+}
+
TEST_F(AtomicChangeTest, InsertBefore) {
setUp();
AtomicChange Change(Context.Sources, DefaultLoc);