Commit graph

14 commits

Author SHA1 Message Date
Idan Horowitz
2e806dab07 LibJS: Implement Set.prototype.isDisjointFrom 2022-12-02 13:09:15 +01:00
Idan Horowitz
3470f33a0f LibJS: Implement Set.prototype.isSupersetOf 2022-12-02 13:09:15 +01:00
Idan Horowitz
e29be4eaa8 LibJS: Implement Set.prototype.isSubsetOf 2022-12-02 13:09:15 +01:00
Idan Horowitz
e359eeabe8 LibJS: Implement Set.prototype.symmetricDifference 2022-12-02 13:09:15 +01:00
Idan Horowitz
be8329d5f6 LibJS: Implement Set.prototype.difference 2022-12-02 13:09:15 +01:00
Idan Horowitz
9e693304ff LibJS: Implement Set.prototype.intersection 2022-12-02 13:09:15 +01:00
Idan Horowitz
fee65f6453 LibJS: Implement Set.prototype.union 2022-12-02 13:09:15 +01:00
Idan Horowitz
59080f441e LibJS: Normalize NaN values in Sets and Maps
This ensures that different NaN types (e.g. 0/0, 0 * Infinity, etc) are
mapped to the same Set/Map entry.
2022-04-02 14:15:43 +01:00
davidot
821ae3a479 LibJS: Add tests for Set.prototype.keys which is an alias for values 2022-02-10 14:09:39 +00:00
davidot
45646eee43 LibJS: Fix Map Iterators when elements are deleted during iteration
Before this would assume that the element found in operator++ was still
valid when dereferencing it in operator*.
Since any code can have been run since that increment this is not always
valid.
To further simplify the logic of the iterator we no longer store the
index in an optional.
2022-02-10 14:09:39 +00:00
Ali Mohammad Pur
3bfcd7b52d LibJS: Implement Sets using Maps
This implements ordered sets using Maps with a sentinel value, and
includes some extra set tests.
Fixes #11004.

Co-Authored-By: davidot <davidot@serenityos.org>
2022-02-09 20:57:41 +00:00
Idan Horowitz
2a3090d292 LibJS: Add the SetIterator built-in and Set.prototype.{values, entries}
While this implementation should be complete it is based on HashTable's
iterator, which currently follows bucket-order instead of the required
insertion order. This can be simply fixed by replacing the underlying
HashTable member in Set with an enhanced one that maintains a linked
list in insertion order.
2021-06-09 11:48:04 +01:00
Idan Horowitz
0b0f1eda05 LibJS: Add most of the Set.prototype methods
Specifically all aside from "values" and "entries" which require an
implementation of the SetIterator object.
2021-06-09 11:48:04 +01:00
Idan Horowitz
670be04c81 LibJS: Add the Set built-in object 2021-06-09 11:48:04 +01:00