[llvm] Add contains(KeyType) -> bool methods to StringSet
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 17 Jul 2020 17:43:12 +0000 (10:43 -0700)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 17 Jul 2020 18:26:27 +0000 (11:26 -0700)
Matches C++20 API addition.

Differential Revision: https://reviews.llvm.org/D83449

llvm/include/llvm/ADT/StringSet.h
llvm/unittests/ADT/StringSetTest.cpp

index 63d929399a4ecaf38ecc79a2f24c1444286c5324..c4245175544b4e41342edadd7764a4bea6a24086 100644 (file)
@@ -45,6 +45,9 @@ public:
   insert(const StringMapEntry<ValueTy> &mapEntry) {
     return insert(mapEntry.getKey());
   }
+
+  /// Check if the set contains the given \c key.
+  bool contains(StringRef key) const { return Base::FindKey(key) != -1; }
 };
 
 } // end namespace llvm
index e27306dd696fff9a857547a4689940ce244cbcd3..0071f5a3775be110cff8d688492ca3551811a96b 100644 (file)
@@ -53,4 +53,23 @@ TEST_F(StringSetTest, EmptyString) {
   EXPECT_EQ(Count, 1UL);
 }
 
+TEST_F(StringSetTest, Contains) {
+  StringSet<> Set;
+  EXPECT_FALSE(Set.contains(""));
+  EXPECT_FALSE(Set.contains("test"));
+
+  Set.insert("");
+  Set.insert("test");
+  EXPECT_TRUE(Set.contains(""));
+  EXPECT_TRUE(Set.contains("test"));
+
+  Set.insert("test");
+  EXPECT_TRUE(Set.contains(""));
+  EXPECT_TRUE(Set.contains("test"));
+
+  Set.erase("test");
+  EXPECT_TRUE(Set.contains(""));
+  EXPECT_FALSE(Set.contains("test"));
+}
+
 } // end anonymous namespace