Also add a test case to wasm-ld that asserts without this change.
Internally wasm-ld builds a StringMap of exported functions and it seems
like allowing empty string in the set is preferable to adding checks.
This assert looks like it was most likely just a historical accident.
It started life here purely to support InputLanguagesSet:
eeac27e38c5c567d63bbfa5410620d955696491b
Then got extracted here:
e57a4033385c5976cbb17af1e962b1224a61183b
Then got moved to AST here
5c48bae209bcbd261886f63abac695b1e30544e6
With the `InLang` paramater name still intact which suggested is
InputLanguagesSet origins.
Differential Revision: https://reviews.llvm.org/D74589
explicit StringSet(AllocatorTy A) : base(A) {}
std::pair<typename base::iterator, bool> insert(StringRef Key) {
- assert(!Key.empty());
return base::insert(std::make_pair(Key, None));
}
Element->Destroy();
}
+TEST_F(StringSetTest, EmptyString) {
+ // Verify that the empty string can by successfully inserted
+ StringSet<> Set;
+ size_t Count = Set.count("");
+ EXPECT_EQ(Count, 0UL);
+
+ Set.insert("");
+ Count = Set.count("");
+ EXPECT_EQ(Count, 1UL);
+}
+
} // end anonymous namespace