1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:48:12 +00:00

LibJS: Implement Set.prototype.union

This commit is contained in:
Idan Horowitz 2022-12-01 23:04:30 +02:00 committed by Linus Groh
parent 8e1df36588
commit fee65f6453
6 changed files with 76 additions and 0 deletions

View file

@ -23,6 +23,18 @@ void Set::initialize(Realm& realm)
m_values = Map::create(realm);
}
NonnullGCPtr<Set> Set::copy() const
{
auto& vm = this->vm();
auto& realm = *vm.current_realm();
// FIXME: This is very inefficient, but there's no better way to do this at the moment, as the underlying Map
// implementation of m_values uses a non-copyable RedBlackTree.
auto* result = Set::create(realm);
for (auto const& entry : *this)
result->set_add(entry.key);
return *result;
}
void Set::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);