diff options
author | Douglas Gregor <dgregor@apple.com> | 2013-02-19 18:26:07 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2013-02-19 18:26:07 +0000 |
commit | 1f1713ff7a53c9c491c59886984f6a0534ce3630 (patch) | |
tree | c45abfb5e9ff2378d8a45abab4dd31fb8f64fdac | |
parent | 383c6fc458ebd2bb7748483de56a97b68f3a9f2d (diff) |
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
-rw-r--r-- | include/llvm/ADT/MapVector.h | 11 | ||||
-rw-r--r-- | unittests/ADT/MapVectorTest.cpp | 16 |
2 files changed, 19 insertions, 8 deletions
diff --git a/include/llvm/ADT/MapVector.h b/include/llvm/ADT/MapVector.h index 405fc43978..f6fcb0888d 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 9f613697d5..11178bc15e 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<int, int> MV; std::pair<MapVector<int, int>::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); } |