From: Douglas Gregor Date: Tue, 19 Feb 2013 18:26:07 +0000 (+0000) Subject: Remove my bogus MapVector::erase() with a narrower ::pop_back(), and add a unit test. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=1f1713ff7a53c9c491c59886984f6a0534ce3630 Remove my bogus MapVector::erase() with a narrower ::pop_back(), and add a unit test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175538 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/MapVector.h b/include/llvm/ADT/MapVector.h index 405fc43978c..f6fcb0888de 100644 --- a/include/llvm/ADT/MapVector.h +++ b/include/llvm/ADT/MapVector.h @@ -119,14 +119,11 @@ public: (Vector.begin() + Pos->second); } - /// \brief Erase entry with the given key. - void erase(const KeyT &key) { - typename MapType::iterator Pos = Map.find(key); - if (Pos == Map.end()) - return; - - Vector.erase(Vector.begin() + Pos->second); + /// \brief Remove the last element from the vector. + void pop_back() { + typename MapType::iterator Pos = Map.find(Vector.back().first); Map.erase(Pos); + Vector.pop_back(); } }; diff --git a/unittests/ADT/MapVectorTest.cpp b/unittests/ADT/MapVectorTest.cpp index 9f613697d57..11178bc15e8 100644 --- a/unittests/ADT/MapVectorTest.cpp +++ b/unittests/ADT/MapVectorTest.cpp @@ -13,7 +13,7 @@ using namespace llvm; -TEST(MapVectorTest, insert) { +TEST(MapVectorTest, insert_pop) { MapVector MV; std::pair::iterator, bool> R; @@ -38,4 +38,18 @@ TEST(MapVectorTest, insert) { EXPECT_EQ(MV.size(), 2u); EXPECT_EQ(MV[1], 2); EXPECT_EQ(MV[4], 5); + + MV.pop_back(); + EXPECT_EQ(MV.size(), 1u); + EXPECT_EQ(MV[1], 2); + + R = MV.insert(std::make_pair(4, 7)); + ASSERT_NE(R.first, MV.end()); + EXPECT_EQ(R.first->first, 4); + EXPECT_EQ(R.first->second, 7); + EXPECT_TRUE(R.second); + + EXPECT_EQ(MV.size(), 2u); + EXPECT_EQ(MV[1], 2); + EXPECT_EQ(MV[4], 7); }