aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/DenseMapTest.cpp
diff options
context:
space:
mode:
authorRamkumar Ramachandra <ramkumar.ramachandra@codasip.com>2025-05-08 11:22:10 +0100
committerGitHub <noreply@github.com>2025-05-08 11:22:10 +0100
commit358ebddeb836d1c0ac665a8a2faa2e07fd89da63 (patch)
tree9efd808945c4637100d1899292a8517f47d41f31 /llvm/unittests/ADT/DenseMapTest.cpp
parente40200901cf1af860db9ded5c03b7b104396e429 (diff)
downloadllvm-358ebddeb836d1c0ac665a8a2faa2e07fd89da63.zip
llvm-358ebddeb836d1c0ac665a8a2faa2e07fd89da63.tar.gz
llvm-358ebddeb836d1c0ac665a8a2faa2e07fd89da63.tar.bz2
[DenseMap] Introduce lookup_or (#138887)
Introduce lookup_or, a variant of lookup, for non-default-constructible values.
Diffstat (limited to 'llvm/unittests/ADT/DenseMapTest.cpp')
-rw-r--r--llvm/unittests/ADT/DenseMapTest.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/DenseMapTest.cpp b/llvm/unittests/ADT/DenseMapTest.cpp
index b9d519a..2bf0f90 100644
--- a/llvm/unittests/ADT/DenseMapTest.cpp
+++ b/llvm/unittests/ADT/DenseMapTest.cpp
@@ -616,6 +616,26 @@ TEST(DenseMapCustomTest, StringRefTest) {
EXPECT_EQ(42, M.lookup(StringRef("a", 0)));
}
+struct NonDefaultConstructible {
+ unsigned V;
+ NonDefaultConstructible(unsigned V) : V(V) {};
+ bool operator==(const NonDefaultConstructible &Other) const {
+ return V == Other.V;
+ }
+};
+
+TEST(DenseMapCustomTest, LookupOr) {
+ DenseMap<int, NonDefaultConstructible> M;
+
+ M.insert_or_assign(0, 3u);
+ M.insert_or_assign(1, 2u);
+ M.insert_or_assign(1, 0u);
+
+ EXPECT_EQ(M.lookup_or(0, 4u), 3u);
+ EXPECT_EQ(M.lookup_or(1, 4u), 0u);
+ EXPECT_EQ(M.lookup_or(2, 4u), 4u);
+}
+
// Key traits that allows lookup with either an unsigned or char* key;
// In the latter case, "a" == 0, "b" == 1 and so on.
struct TestDenseMapInfo {